Krafton_Jungle/Study
Krafton_jungle 5기 7주차 WIL - OSI 7계층
전낙타
2024. 5. 2. 19:22
OSI 7계층
OSI 7계층 | 네트워크에서 통신이 일어나는 과정을 7계층으로 나눈것 |
계층을 나눈 이유 | 통신이 일어나는 과정을 단계별로 파악할 수 있고, 특정 계층에서 문제가 발생하면 문제가 밠애한 계층만 고치면 되기 때문임 |
1계층 Physical layer
물리계층 | 모든 파일과 프로그램은 0과 1의 나열이다. 결국 0과 1만 주고받을 수 있으면 통싱에 성공했다고 할 수 있는 셈. 두대의 컴퓨터를 연결했다고 가정했을때, 1을 보낼때는 +5V의 전기를 전선으로 흘려보내고 0을 보낼때는 -5V의 전기를 전선으로 흘려보내면 0과 1의 전송이 가능할 것이다. 0과 1을 주고받을 수 있으면 모든 데이터를 주고받을 수 있으므로 컴퓨터간의 통신이 가능해진다. 그러나 이 아이디어는 실제에선 잘 동작하지 않는데, 그 이유는 전자기파의 주파수를 일정하게 유지하는것이 어렵고, 전선은 모든 주파수를 다 통과시키지 못한다. 결국 손상된 데이터가 수신될것이다. 이 문제를 해결하기 위해 데이터를 아날로그 신호로 변경해서 수신자에게 전송하게 된다. |
정리 | 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘려보내고, (encoding) 아날로그 신호가 들어오면 0과 1의 나열로 해석하여 (decoding) 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고받을 수 있게 주는 모듈(module) 이런 식으로 물리계층의 데이터를 encoding, decoding하는 기술은 하드웨어의 PHY칩이 수행하게 된다. 1계층 모듈은 사실상 하드웨어 레벨에 속해있는것이다. |
여러대의 컴퓨터간의 통신
컴퓨터간의 통신 | 위에서 설명한 내용에 따르면 여러개의 컴퓨터간의 통신은 전선이 연결되어있는 컴퓨터만 통신이 가능하다. 하지만 이런 방식은 전선을 꽃을 구멍도 많이 필요하고 전선도 많이 필요하게 된다. 통신하려는 컴퓨터가 많아지면 많아질수록 비용 면에서 비효율적인 셈 따라서 전선 하나를 가지고 여러개의 컴퓨터와 통신하기 위해 스위치라는 것을 사용한다. 스위치는 모든 컴퓨터에 연결되어있으며 송신자와 수신자의 정보를 가지고 원하는 컴퓨터와 통신할 수 있다. 이렇게 스위치만으로 구성된 네트워크 망을 인트라넷 이라고 한다. 이 인트라넷에서 더 나아가 스위치와 스위치를 연결하면 서로 다른 네트워크에 접속해있는 컴퓨터끼리도 통신이 가능해진다. 이를 라우터라고 하는데, 스위치 + 라우터 인 상태임 (라우터 = 공유기) 이런식으로 전 세계의 컴퓨터들을 연결한 것을 인터넷이라고 한다. |
2계층 Data link layer
data link layer | 같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈. Framing 은 Data link layer에 속하는 작업들 중 하나. PHY칩이 decoding한 데이터를 구분할 수 있는 구분자 비트를 앞뒤에 추가해준 뒤 데이터를 전송. 반대로 수신하는 측에서는 구분자 비트를 확인하고 해당 비트를 기준으로 데이터를 나눠준다. 이 작업은 랜카드에서 수행되며 2계층까지는 하드웨어적으로 구현되어 있음 |
3계층 Network layer
Netwok layer | 수많은 네트워크들의 연결로 이루어지는 inter-network속에서 어딘가에 있는 목적지 컴퓨터로 데이터를 전송하기 위해 ip주소를 이용해서 길을 찾고 (routing) 자신 다음의 라우터에게 데이터를 넘겨주는 것 (forwarding) |
4계층 Transport layer
Transport layer | 앞서 3계층까지의 작업으로 인해 인터넷 상의 모든 컴퓨터가 서로 통신할 수 있게 되었음 데이터를 수신하는 컴퓨터는 여러개의 프로세스에 나눠줘야 함 이때 수신한 데이터를 어떤 프로세스에 줘야할지 나누는 기준이 필요함. 먼저 데이터를 받고자 하는 프로세스들을 포트번호를 가지고 있어야 한다. 포트번호는 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야 하는 정수값. 한편 송신자는 데이터를 보낼 때 데이터를 받을 수신자 컴퓨터에 있는 프로세스의 포트 번호를 붙여서 보낸다. 다시 수신자의 컴퓨터로 돌아와서 해당 포트번호를 확인한 후 해당하는 프로세스에 데이터를 넘겨준다. |
정리 | Port 번호를 사용하여 도착지 컴퓨터의 최종 도착지인 프로세스까지 데이터가 도달하게 하는 모듈 운영체제의 커널에서 소프트웨어적으로 구현되어 있다. |
5계층 Application layer
Application layer | OSI 네트워킹 모델은 그 구조가 총 7개의 Layer로 나뉘어져 있다. 여기서 Session layer, Presentation layer는 왜 생략이 된걸까? |
TCP/IP | 현대의 인터넷은 OSI 모델이 아니라 TCP/IP 모델을 따르고 있다. TCP/IP Model에서는 Physical layer, Data link layer, Network layer, Transport layer, Application layer로 구성되어 있다. TCP/IP Model에서는 상위 3개의 모델이 모두 Application layer로 뭉뚱그려져 있다 |
다시 Application layer | TCP/IP 소켓 프로그래밍 - 운영체제의 Transport layer에서 제공하는 API를 활용해서 통신 가능한 프로그램을 만드는것을 TCP/IP 소켓 프로그래밍, 또는 네트워크 프로그래밍이라고 한다. 소켓 프로그래밍 만으로도 클라이언트, 서버 프로그램을 따로따로 만들어서 동작시킬 수 있음 그뿐만 아니라 TCP/IP 소켓 프로그래밍을 통해서 누구나 자신만의 Application Layer 인코더와 디코더를 만들 수 있다. Application Layer도 다른 Layer들과 마찬가지로 인코더, 디코더가 있는데 대표적으로 Application Layer 프로토콜인 HTTP가 있다. |