[네트워크] TCP/IP 5계층

김태훈·2022년 9월 28일
0

0. 프로토콜이란?

네트워크의 계층을 이해하기 위해 먼저 프로토콜에 대한 개념을 잡고 가자.
프로토콜은 기기간에 데이터가 잘 전달되게 약속한 '규약'이다. 서로 어떻게 데이터를 보내고, 어떻게 데이터를 받을지 약속해서 원활한 통신이 가능케 한다.

1. OSI 7계층은 뭐고, TCP/IP 5계층은 무슨 차이인가?

TCP/IP(Transfer Control Protocol/Internet Protocol)는 네트워크 통신 표준 모델이다. OSI가 표준이 아닌 이유는, TCP/IP 모델이 먼저 나왔기 때문이다. 둘다 통신 표준 모델이긴 하지만, TCP/IP가 OSI 7계층을 더 간단히 표현한 모델이다.

1. 네트워크 모델 - (1계층) "Pysical Layer" 물리 계층

기기들이 연결되기 위한 물리적인 사용 규칙을 정한 계층이다.
구리선을 통해서, 광케이블을 통해서, 혹은 무선 전자 채널을 통해서 bit 신호를 주고 받을지 정하는 계층이다.

  • Encoding
  • Decoding

다음 두 과정을 거쳐서 디지털신호를 아날로그로, 아날로그를 다시 디지털 신호로 변환하여 결국 기기에 0과 1의 bit신호로 정보가 도착하게 된다.머

1계층에서 물리적인 사용 규칙을 정했으니, 이젠 본격적으로 통신 규칙을 정할 단계이다.
네트워크에 연결하여 통신할 때, 충돌을 피해야 한다. 이를 2계층에서 담당한다고 볼 수 있다.
그래서 한 네트워크 안 (1-hop delivery) 에서는 기기들 마다 MAC주소가 고유해야한다.( 2계층은 결국 1-hop 안에서 이뤄짐(같은 네트워크 안), 그리고 MAC주소는 Ethernet-card에 구현되어 있다.)
이 때, Routing 과 Forwarding의 과정을 거쳐서 목적지의 MAC 주소까지 2계층의 데이터를 정의하는 용어인 'Frame' (data를 2계층에서 부르는 말)을 전달한다.

  • ARP
    Address Resolution Protocol, LAN 내부의 ARP Table을 참조하여 IP주소를 MAC주소로 변환

3. 네트워크 모델 - (3계층) "Network Layer" 네트워크 계층

- '인터넷'의 정의가 무엇인가 ?

인터넷이란, 네트워크와 네트워크의 연결이다. 곧, 서로 다른 네트워크의 연결망을 의미한다.
2계층까지는 네트워크 '하나' 의 통신방법을 다루었지만, 3계층에서 본격적으로 네트워크 '끼리'의 통신방법을 다루게 된다.

서로 다른 네트워크의 연결을 담당하는 계층이다.
2계층과 마찬가지로 Routing과 Forwarding의 과정을 거쳐서 이번에는 목적지의 'IP' 주소 까지 패킷을 전달한다.
각 네트워크는 서로 다른 네트워크를 연결하는 '라우터'를 통해 연결되는데, 이 때 Routing Table을 이용하여 (3계층의 데이터를 일컫는 말)packet을 알맞은 목적지까지 전달(Forwarding)하게 된다.

4. 네트워크 모델 - (4계층) "Transport Layer" 수송 계층

3계층 까지 완성했다. 이제 네트워크 안에서도 통신이 가능하고(2계층), 네트워크 끼리도 정보를 송수신할 수 있게 됐다(3계층). 하지만, 패킷이 호스트에 도착했는데, 어느 프로세스에 그 패킷을 가져다 쓸 것인가? 이를 결정하는 것이 4계층의 역할이다.

Process to Process delivery

Port 번호를 사용하여 host에 도착한 packet을 알맞은 process까지 데이터를 전달한다.
이는 OS 커널에 구현되어 있으며, 이 패킷전송 프로토콜에는 'UDP'와 'IP'가 있다.

TCP / UDP / IP
IP는 별개의 그룹(3계층 이므로) 보고, TCP와 UDP 즉, 4계층에서의 두 프로토콜들은 공통적으로 컴퓨터들 사이에서 메세지를 전달한다. 하지만 차이가 극명하다.

  • TCP (Transmission Control Protocol) - 일대일(uni) 통신
    데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용되는 프로토콜이다
    1. TCP는 데이터를 전송할 때 바이트를 기본단위로 사용자 데이터를 스트림 형태로 처리한다. 전송지에서의 데이터 순서가 최종 수신지에서도 일치되도록 한다는 의미다.
    2. 연결지향적이다. (Connection-oriented Byte stream 1번항목과 연결되어 표현된다.
    연결지향적이란, 호스트 간에 메시지가 연결 상태를 유지하며 데이터교환이 끊임없이 가능하도록 하는 것을 말한다. 다시 말해 End-to-End로, 데이터 전송 호스트와 데이터 수신 호스트사이에 데이터 전송의 흐름을 관리한다. 이를 handshake 방식으로 종단간의 연결을 관리한다고 한다.
    3. 흐름 제어
    데이터 처리 속도를 조절하여 송신자가 보낸 정보가 수신자에게 overflow가 발생하지 않도록 관리한다.
    4. 혼잡제어
    네트워크 내에서 패킷의 수가 지나치게 많아지지 않게 방지한다.
    5. 신뢰성 보장 (Reliability)
    패킷들을 전달할때 마다 확인 절차를 거치고, 목적지에 도착하여서도 패킷에 부여된 번호를 점검, 추적해 패킷의 누락과 오류 등을 찾아내어 이에 대한 재전송 요청을 할 수 있는 연결형 서비스이다. 따라서 데이터를 '양방향'으로 전달한다. (송->수, 수->송)

  • UDP (User Datagram Protocol) - 일대일(uni), 일대다(broad), 다대다(muti) 통신
    컴퓨터들 간에 메세지를 교환할 때 제한된 서비스만을 제공하는 프로토콜
    이는 TCP와 달리 수신자가 데이터를 검사하지 않는다. 자세히 말하면, 송신자가 보낸 수 많은 패킷들을 재조립하는 과정을 거치치 않아 5.신뢰성 보장이 되지 않으며, 따라서 송신된 정보를 확인하지 않으므로, 자동으로 3.흐름제어나, 4.혼잡제어 또한 이루어지지 않는다. 다시 말해서 송신자가 일방적으로 패킷을 전달하는 프로토콜이다. 따라서 2.비연결 지향적이며, 1. Connection-less by message stream이다.

  • TCP/UDP 공통점
    그래도 공통점이 있는데, 둘 다 포트번호를 이용하여 주소를 지정하며, 데이터 오류를 위한 체크섬이 존재한다는 점이다.

  • IP?
    이 친구도 비연결 지향적이다, 그냥 일방적으로 3계층에서 패킷이 전송되며, 받든 말든 상관 안한다. 호스트간의 길라잡이 역할을 하며, 신뢰성보장도 하지 않고, 패킷의 재조립과정은 당연히 없다.
profile
기록하고, 공유합시다

0개의 댓글