[Netwhat] TCP, UDP

Soeng_dev·2021년 2월 5일
0

42 Seoul / Netwhat

목록 보기
4/6

TCP

Transmission Control Protocol

전송계층에서 데이터를 보내기 위해 사용하는 프로토콜
UDP와 달리 신뢰성을 보장함

연속성보다 신뢰성있는 전송이 중요할때 사용

• 하는일

인터넷 상에서 데이터를 메세지의 형태(세그먼트 라는 블록 단위)로 보내기 위해 IP와 함께 사용하는 프로토콜이다.
IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적 및 관리한다.

• 3-way handshake

TCP 통신위해 네트워크 연결을 설정 하는 과정

양쪽 모두 데이터를 전송할 준비가 되었다는 것을 알 수 있도록 한다.

A 프로세스(Client)가 B 프로세스(Server)에 연결을 요청할때를 예로들면 다음과 같다.

A -> B: SYN
A가 연결 요청 메시지 전송 (SYN)
이때 Sequence Number를 임의의 랜덤 숫자로 지정, SYN 플래그 비트를 1로 설정한 세그먼트를 전송
PORT 상태 - B: LISTEN, A: CLOSED

B -> A: SYN + ACK
접속 요청을 받은 B가 요청을 수락했으며, 요청한 A도 포트를 열어 달라는 메시지 전송 (SYN + ACK)
수신자는 Acknowledgement Number 필드를 (Sequence Number + 1)로 지정하고, SYN과 ACK 플래그 비트를 1로 설정한 세그먼트를 전송
PORT 상태 - B: SYN_RCV, A: CLOSED

A -> B: ACK
PORT 상태 - B: SYN_RCV, A: ESTABLISHED
마지막으로 A가 수락 확인(ACK)을 보내 연결을 맺음
이때, 전송할 데이터가 있으면 이 단계에서 데이터를 전송할 수 있다.
PORT 상태 - B: ESTABLISHED, A: ESTABLISHED

• 4-way handshake

TCP의 연결을 해제(Connection Termination) 하는 과정

A 프로세스(Client)가 B 프로세스(Server)에 연결 해제를 요청하면 다음과 같은 프로세스를 거친다

A -> B: FIN
A가 연결 종료한다는 FIN 플래그를 전송
B가 FIN 플래그로 응답하기 전까지 연결을 계속 유지

B -> A: ACK
B는 Acknowledgement Number 필드를 (Sequence Number + 1)로 지정하고, ACK 플래그 비트를 1로 설정한 세그먼트를 전송한다.
그리고 자신이 전송할 데이터가 남아있다면 통신을 끝내기 전에 마저 전송한다.
(이 상태가 TIME_WAIT 상태)

B -> A: FIN
B가 남은 통신이 끝난후 연결 종료 요청에 합의한다는 의미로 A에게 FIN 플래그를 전송

A -> B: ACK
B에서 FIN전에 전송한 패킷이 통신상의 이유로 FIN패킷보다 늦게 도착할때를 대비해 A는 FIN 수신후 일정시간(디폴트 240초) 동안 세션을 남겨놓고 잉여 패킷을 기다림 (이를 "TIME_WAIT" 라고함)
일정시간후, 세션을 만료하고 연결을 종료시키며, "CLOSE" 로 변화

• 특징

» 연결형 서비스

3-way handshaking과정을 통해 연결을 설정하고, 4-way handshaking을 통해 연결을 해제한다.

» 흐름제어

데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지하는 것
송신하는 곳에서 감당이 안되게 많은 데이터를 빠르게 보내 수신하는 곳에서 문제가 일어나는 것을 막는다.

» 혼잡제어

네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지하는 것
정보의 소통량이 과다하면 패킷을 조금만 전송하여 혼잡 붕괴 현상이 일어나는 것을 막는다.

» 전이중(Full-Duplex)

전송이 양방향으로 동시에 일어날 수 있다.

» 점대점

각 연결이 정확히 2개의 종단점을 가지고 있다.
멀티캐스팅이나 브로드캐스팅을 지원하지 않는다.
연속성보다 신뢰성있는 전송이 중요할 때에 사용된다.

» 높은 신뢰성

높은 신뢰성을 보장함

» UDP대비 느린 속도

UDP대비 속도가 느리다.

UDP

User Datagram Protocol

데이터를 데이터그램 단위로 처리하는 프로토콜

• 특징

  1. 비연결형 서비스로 데이터그램 방식을 제공한다

  2. 정보를 주고 받을 때 정보를 보내거나 받는다는 신호절차를 거치지 않는다.

  3. UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출한다.

  4. 신뢰성이 낮다

  5. TCP보다 속도가 빠르다

TCP vs UDP

: : 참고

https://gmlwjd9405.github.io/2018/09/19/tcp-connection.html
https://bangu4.tistory.com/74
https://velog.io/@hidaehyunlee/TCP-%EC%99%80-UDP-%EC%9D%98-%EC%B0%A8%EC%9D%B4

profile
Software Engineer

0개의 댓글