UDP (User Datagram Protocol)
어떠한 협상과정 없이 메시지를 실어서 보내기만 하고 받았는지 안 받았는지는 신경쓰지 않는다
TCP (Transmission Control Protocol)
메시지를 보내기 전에, 3-way-handshake 과정을 통해서 메시지를 정상적으로 전달할 수 있는지 확인
연결을 확인하고 데이터를 보낸다는 점에서 TCP는 상대적으로 신뢰성을 가진다
3-way-handshake
세 차례의 패밋들을 주고 받는 과정을 거쳐야만 TCP 연결(connection)이 성립(establish) 된다.
① Client는 SYN 패킷(sequence number 포함)을 생성해서, Server에게 전달합니다. 일종의, "포트 열려있나요?" 라고 문을 두드리는 과정이라고 보면 됩니다.
② Server는 SYN 패킷(sequence number 포함)과 받은 SYN의 대답 격인 ACK 패킷(acknowledgement number 포함)을 Client에게 전달합니다. 그리고 Server는 Client의 접속을 받아들이기 위해, RAM(메모리)에 일정 공간을 확보해둡니다.
일종의, "네, 열려있습니다." 라고 대답하는 과정이라고 보면 되며, acknowledgement number의 값은, 방금 받은 SYN 패킷의 sequence number 값에 일정 값을 증가시켜서 보냅니다.
③ 그리고 다시 Client는 방금 받은 SYN의 대답 격인 ACK 패킷(acknowledgement number 포함)을 Server에게 전달합니다. 일종의, "그럼 들어가겠습니다~" 라고 대답하는 과정이라고 보시면 됩니다. 여기서도 마찬가지로 acknowledgement number의 값은, 방금 받은 SYN 패킷의 sequence number 값에 일정 값을 증가시켜서 보냅니다.
TCP (Transmission Control Protocol) | UDP (User Datagram Protocol) | |
설명 | 연결형 서비스를 지원하는 전송계층 프로토콜 인터넷 환경에서 기본으로 사용 호스트간 신뢰성 있는 데이터 전달과 흐름제어 및 혼잡제어 등을 제공하는 전송계층 연결 후 통신 1:1 통신 방식 메시지를 보내기 전에, 3-way-handshake 과정을 통해서 메시지를 정상적으로 전달할 수 있는지 확인 |
비연결형 서비스를 지원하는 전송계층 프로토콜 사용자 데이터그램형 프로토콜 인터넷상에서 서로 정보를 주고받을 때 정보를 보낸다는 신호나 받는다는 신호 절차를 거치지 않고, 보내는 쪽에서 일방적으로 데이터를 전달하는 통신 프로토콜 보내는 쪽에서는 받는 쪽이 데이터를 받았는지 받지 않았는지 확인할 수 없고, 또 확인할 필요도 없도록 만들어진 프로토콜 연결 없이 통신 1:1, 1:N, N:N 통신 방식 |
특징 | 가상 회선 연결 방식, 연결형 서비스를 제공 높은 신뢰성(Sequence Number, Ack Number를 통한 신뢰성 보장) 연결의 설정(3-way handshaking)과 해제(4-way handshaking) 데이터 흐름 제어(수신자 버퍼 오버플로우 방지) 및 혼잡 제어(네트워크 내 패킷 수가 과도하게 증가하는 현상 방지) 전이중(Full-Duplex), 점대점(Point to Point) 서비스 데이터의 경계를 구분 안함 신뢰성 있는 데이터 전송 데이터의 전송 순서 보장 데이터의 수신 여부 확인 패킷을 관리할 필요 없음 UDP보다 전송속도가 느림 |
비연결형(port만 확인하여 소켓을 식별하고 송수신) 패킷 오버헤드가 적어 네트워크 부하 감소 비신뢰성 오류검출(헤더에 오류 검출 필드를 포함하여 무결성 검사) TCP의 handshaking 같은 연결 설정이 없음 DNS, NFS, SNMP, RIP 등 사용 데이터 경계를 구분함 신뢰성 없는 데이터 전송 데이터의 전송 순서가 바뀔 수 있음 데이터의 수신 여부를 확인 안함 패킷을 관리해야 함 TCP 보다 전송 속도가 빠름 |
Socket 통신 과정 |
서버 : 소켓을 생성, 주소 할당, 연결 요청 기다림, 요청에 대한 응답 클라이언트 : 소켓을 생성, 주소 할당, 연결 요청 |
서버 : 소켓을 생성, 주소 할당, 데이터를 송수신 클라이언트 : 소켓 생성 후 데이터 수신 |
TCP 에서 신뢰성 확보 방안은?
- 네트워크를 통해 데이터 전송이 이루어질 때 데이터는 패킷(packet)이라는 단위로 전송
- IP는 이때 데이터 패킷을 한 장소에서 다른 장소로 옮기며, TCP는 데이터의 흐름을 관리하고, 데이터가 정확한지 확인
- 송신 시스템에서는 보내는 시스템에게 데이터를 전송하고, 목적지 시스템은 데이터를 받은 경우 이에 응답하도록 되어 있다
- 목적지 시스템이 받은 데이터에 대한 응답을 하지 않을 경우, 송신 시스템은 일정 시간을 대기한 후 같은 데이터를 재전송하여 신뢰성 확보
References
'IT 기초 > IP Network' 카테고리의 다른 글
[Network] Bandwidth vs Latency (0) | 2021.12.29 |
---|---|
OSI 7 Layer (0) | 2021.12.29 |
[Network] Network Class (0) | 2021.12.29 |
[Network] 네트워크 종류 (0) | 2021.12.29 |
IP (0) | 2021.12.29 |