[Network] 전송계층(Transport layer)과 TCP/UDP

2022. 10. 6. 00:20

전송 계층 (Transport Layer)

네트워크 계층에서는 데이터가 정확하게 목적지까지 도달할 수 있도록 최적의 경로와 대상 IP를 찾아서 전달해준다. 하지만 전송계층보다 아래쪽에 있는 계층들은 데이터가 제대로 잘 전달되었는지 확인하지 않는다. 

 

패킷을 분할해서 전달하는 상황을 생각해보자.

 

 

전송계층이 없다면 수신자 입장에선 정확한 데이터인지, 모든 패킷이 도착했는지 알 수 있는 방법이 없다.

전송계층은 위와 같은 상황이 발생하지 않도록 도달한 데이터 손상이 있는지 확인해서 재전송을 요청하기도 하고 무작위로 도착한 분할된 데이터 조각들을 재조립해서 애플리케이션에 전달해준다.

 

정리하면 전송 계층은 데이터의 오류를 검증하고 순차적으로 잘 전달해주는 서비스를 제공한다.


TCP(Transmission Control Protocol)

TCP는 신뢰적인 연결 지향형 통신을 제공한다.

 

TCP의 특징

1. 연결형 통신으로 데이터를 보내기 전에 서로 연결을 위한 통신을 해야 한다.

2. 데이터의 순서를 보장한다.

3. 신뢰성을 보장한다.

4. UDP보다 상대적으로 느리다.

 

TCP 헤더

https://www.gatevidyalay.com/transmission-control-protocol-tcp-header/

  • sequence number : 바이트 단위로 구분되어 순서화되는 번호로 TCP 세그먼트의 첫 번째 바이트에 부여되는 번호. 이 필드로 신뢰성 있는 전송과 흐름 제어가 가능해진다. 
  • acknowledgement number : 다음에 받기를 기대하는 번호. 
  • flag
    • URG : 중요한 데이터인지 알려주는 flag. 우선순위가 높음
    • ACK : 요청에 대한 응답과 관련된 flag
    • PSH : 데이터를 즉시 응용 계층으로 전달
    • RST : 연결에 문제가 있다고 느껴질 때 응답용으로 사용
    • SYN : 양방향 연결 통신 시에 사용. 
    • FIN  :  통신을 종료할 때 사용
  • window size : 수신 측의 버퍼 크기 명시
  • checksum : 오류 검출 용도

3 way handshake 

데이터를 교환하기 전 양방향 연결을 설정하기 위한 통신

 

 

 

 

1. SYN flag를 1로 설정. sequence number (x)

 

2. SYN, ACK flag를 1로 설정. sequcne number (y)와 acknowledgement number (x+1)

 

3. ACK flag를 1로 설정 acknowledgement number (y+1)

 

 

 

 

 

UDP (User Datagram Protocol)

UDP는 비연결성 통신 프로토콜이다.

 

TCP의 특징

1. 통신을 위한 연결을 하지 않는다.

2. 순서 제어를 하지 않는다.

3. 흐름 제어를 하지 않는다.

4. 사전 연결 작업이 없기 때문에 TCP보다 전송속도가 빠르다.

 

UDP 헤더

https://www.imperva.com/learn/ddos/udp-user-datagram-protocol/

UDP 같은 경우 데이터를 제어하지 않기 때문에 관련 필드가 없고 매우 간단한 구조이다.

 

BELATED ARTICLES

more