[Network] TCPvsUDP

김진회·2022년 11월 24일
0

cs

목록 보기
7/14


1. TCP(Transmission Control Protocol)

서버와 클라이언트 간에 데이터를 신뢰성있게 전달하기 위해 만들어진 프로토콜이다. 일반적으로 TCP와 IP를 같이 사용한다. (TCP/IP)
IP가 데이터의 배달을 처리한다면 TCP는 패킷을 추적 및 관리한다.

  • 특징
    • 데이터를 전송하기 전에 연결을 만드는 연결 지향 프로토콜이다.
    • 흐름 제어, 혼잡 제어, 오류 제어를 통해 신뢰성을 보장한다.
    흐름 제어: 송신측과 수신측의 데이터 처리 속도를 조절해서 수신자의 버퍼 오버플로우를 방지 ex) StopAndWait, 슬라이딩윈도우
    혼잡 제어: 송신측의 데이터 전달과 네트워크의 데이터 처리 속도를 해결하기 위한 기법 ex) 합증가/곱감소 알고리즘, Slow Start, 
    오류 제어: 오류 검출과 재전송을 한다. ex) StopAndWait ARQ, GoBackN ARQ, SR(selective-repeat) ARQ
    • 데이터의 전송 순서를 보장하며 수신 여부를 확인할 수 있다.
    • UDP보다 상대적으로 느리다.
    • 3-way handshake 과정을 통해 연결을 설정하고 통신한다.
    • 4-way handshake 과정을 통해 연결을 종료한다.
    • 대부분의 웹 HTTP 통신, 이메일, 파일 전송 등

3-way handshake (연결)

1) 클라이언트가 서버에게 연결 요청을 위한 SYN 전송

2) 서버는 SYN을 받아 LISTEN->SYN_RCV 상태가 되고,요청에 대한 대답 ACK와 포트를 열어달라는 요청 SYN를 클라이언트에게 전송

3) 클라이언트는 SYN와 ACK를 받아 ESTABLISHED로 상태를 변경하고 응답패킷 ACK를 서버에게 전송. ACK를 받은 서버는 상태다 ESTABLSHED로 변경

4-way handshake (종료)

1) 클라이언트가 연결 종료를 위한 FIN 전송

2) 서버는 ACK를 보내고 자신의 통신이 끝날 때까지 기다리는 TIME_WAIT 상태가 됨

3) 서버가 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN 전송

4) 클라이언트는 응답패킷 ACK 전송

TIME_WAIT: 클라이언트가 서버에게 ACK를 받고 아직 도착하지 않은 패킷이 도착할 때까지 기다리기 위한 상태


2.UDP

데이터를 데이터그램 단위로 처리하는 프로토콜이다.
데이터그램 : 독립적인 관계를 지니는 패킷

  • 특징

    • 사전에 연결 설정 없이 데이터를 전달하는 비연결형 프로토콜이다.
    • 각각의 패킷은 서로 다른 경로로 전송될 수 있고 도착 순서가 다를 수 있다.
    • 속도는 빠르며 네트워크 부하가 적지만 신뢰성을 보장하지 못한다.
    • RTP(Real Time Protocol), 실시간 스트리밍, Multicast, DNS에 사용된다.

    RTP : 재전송을 하면 안 됨. 여보요'세'보다는 여보'X'요가 낫다.
    Multicast : 한 사람이 못 받았다고 재전송하면 제대로 받은 사람은 중복적으로 데이터를 받음
    DNS : 요청마다 TCP처럼 연결을 맺으면 속도도 느리고 부하도 큼


참조

https://github.com/WooVictory/Ready-For-Tech-Interview/blob/master/Network/TCP.md

https://musclebear.tistory.com/2

profile
SSAFY 7기. HMG. 협업, 소통, 사용자중심

0개의 댓글