기존 ip프로토콜에 대해 알아보고, 이를 통해 TCP와 UDP의 필요성과 특징을 알아봅니다.
[ Contents ]
1. IP 프로토콜의 한계
1) 비연결성: 수신자가 없거나, 서비스 불능 상태여도 전송됨
2) 비신뢰성: 패킷이 유실되거나 차례대로 오지 않을 수 있음
3) 비식별성: 같은 IP를 사용하는 어플리케이션 구분 못함
IP는 Internet Protocol의 약어로 인터넷 통신규약입니다. 각 네트워크마다 고유의 IP주소를 지정하고, 패킷을 출발지 IP부터 목적지 IP까지 보내는 일련의 과정을 정의하고 있습니다.
하지만 IP 프로토콜은 지정된 IP주소로 패킷을 보내기만 할 뿐, 수신 확인이나 데이터 검증은 하기 어렵습니다. (IP패킷 헤더만으로는 한계가 있음)
2. TCP (Transmission Control Protocol)
1) 연결지향 (3 way handshake)
2) 전달 보증
3) 순서 보장
TCP 프로토콜은 IP패킷 TCP 세그먼트를 추가한 전송방식입니다.
TCP 세그먼트에는 '출발/도착지 PORT번호'가 있어 같은 IP에 있는 어플리케이션을 구분할 수 있습니다. 패킷 순서와 검증정보도 담고 있기 때문에 좀 더 신뢰할 수 있는 프로토콜입니다.
SYN: Synchronize의 약자로, 동기화 연결 요청을 뜻합니다.
ACK: Acknowledgment의 약자로, 승인/수신완료를 뜻합니다.
특히 3-way handshake로 송수신자 간의 가상 연결을 지원합니다. TCP의 가장 큰 특징으로, 안정적인 데이터 송수신을 가능케 합니다.
다만 SYN, ACK를 주고받는 시간으로 인해 통신이 다소 지체되는 단점이 있습니다. 연결 외에 데이터 송수신 과정에서도 SEQ(패킷 순서)와 ACK 패킷은 계속 주고받으며 데이터 검증을 합니다. ACK가 올 때까지 송신측은 대기하며, 일정 시간이 지나도록 오지 않으면 유실되었다고 판단하고 이전 데이터를 다시 보냅니다.
연결 종료 시에도 4-way handshake 과정을 거쳐 종료합니다. 먼저 송신자가 종료하자고 FIN 패킷을 보내며, 수신자도 ACK패킷을 보내고 종료 준비를 합니다. 수신자가 먼저 종료를 완료하고 FIN+ACK패킷을 보내면, 그제서야 송신자는 종료하고 ACK 패킷을 보냅니다.
데이터를 잘 받았다, 요청을 수락하겠다는 의미의 ACK 패킷은 통신 내내 보내며, 전송효율을 위해 데이터와 함께 보내곤 합니다.
3. UDP (User Datagram Protocol)
IP프로토콜 + PORT + CHECK SUM
UDP는 IP프로토콜에서 포트번호와 체크섬 검증 정도만 추가된 전송방식입니다. TCP와 달리 SEQ, ACK 패킷이 없으므로 전송과정이 단순하며 빠른 장점이 있습니다. 송신자는 Data만 송신하고, 수신자는 잘 받았는지만 확인합니다. 만약 손상되었거나 유실되었으면 수신자측에서 다시 송신을 요청합니다.
과거 UDP는 신뢰성 없는 위험한 통신방식으로 여겨져 대부분의 통신에 TCP를 사용했습니다. (물론 지금도...)
하지만 최근에는 데이터가 유실될 일이 적으며, 전송효율이 중요시되면서 UDP가 뜨거운 관심을 얻고 있습니다. 매 메시지마다 확인응답을 달아야 하는 통신문화는 약간 구시대적이긴 하죠.
'CS > 데이터통신 & 네트워크' 카테고리의 다른 글
[네트워크] HTTP의 특징: 무상태성(Stateless), 비연결성(Connectionless) (0) | 2023.07.06 |
---|---|
[네트워크] URI, URL, 그리고 URN의 정의와 차이점 (0) | 2023.07.04 |
[네트워크] 서브넷을 합치는 슈퍼넷팅과 CIDR의 개념과 예제 (0) | 2023.05.17 |
[네트워크] 서브네팅의 개념과 VLSM 예제, 서브넷마스크 이용법 (2) | 2023.05.17 |
[네트워크] 클래스별 IP주소 분류(A, B, C, D, E 클래스)와 공인 IP, 사설 IP (0) | 2023.05.16 |
댓글