TCP는 데이터 추적, IP는 데이터 전달
복잡
신뢰성높음
재조합
손실여부확인
TCP는 데이터를 신뢰성 있게 전달하기 위해 만들어진 규약(프로토콜)이다. 컴퓨터와 컴퓨터를 이어주는 네트워크는 네트워크 선로를 통해 전달된다. 어떤 선로인지에 따라 데이터를 전달하는 속도나 손실데이터양이 달라지는데, 이는 데이터를 전달하는 과정에서 그 순서가 의도하지 않게 뒤바뀌거나 손실되어 전달될 수 있음을 뜻한다.
TCP는 데이터 패킷에 일련번호를 부여함으로써 데이터 손실을 찾아내서 교정하고, 순서를 재조합하여 클라이언트에게 전달할 수 있게 해준다.
(패킷 : 인터넷 내에서 효율적으로 라우팅하기 위해 메시지를 여러개의 작은 조각들로 나눈 것)
일련번호가 부여된 패킷을 IP계층으로 보낸다. 각 패킷이 같은 IP로 가더라도 다른 경로(선로)로 전송될 수 있기 때문에 받는사람의 TCP가 받은 각 패킷을 재조립하여 사용자에게 완전한 파일로 보낼 수 있을때까지 기다린다. 각각의 패킷들은 TCP header에 어떤 순서로 재조합할지에 관한 정보를 가진다.
TCP는 IP의 정보뿐 아니라 Port(같은 IP 내에서 프로세스를 구분하기 위한 것)를 이용하여 연결한다. Endpoint에 도착한 데이터가 어느 Port로 들어가야하는지 알아야 연결을 시도할 수 있기 때문이다. TCP Header에 Source Port와 Destination Port가 있다.
데이터전달
컴퓨터 간에 데이터를 전송하기 위해서 각 컴퓨터의 주소가 필요하다. Internet Protocol은 4바이트로 이루어진 컴퓨터 주소이다. 192.169.0.1 처럼 3개의 .로 나뉘어진 숫자로 표시된다.
IP는 TCP와 달리 데이터 재조합, 손실여부확인은 불가능하고 데이터를 전달하는 역할만 담당한다.
IP주소는 MAC주소(하드웨어 고유 식별번호)와 달리 가변적이다. 그래서 IP의 한계를 해결하는 것이 TCP이다.
통신하려는 양쪽 단말이 통신할 준비가 되었는지, 데이터가 제대로 전송됐는지, 데이터가 가는도중 변질되지 않았는지, 수신자가 빠짐없이 받았는지 등을 점검할 수 있는 정보가 담겨있다.
SYN, ACK, FIN, RST, Window size 등과 같은 신뢰성 보장과 흐름제어, 혼잡제어에 관여할 수 있는 요소들도 포함되어 있다.
TCP는 흐름제어 한다
Window size로 한번에 송수신할 데이터의 양을 정한다
Window size는 수신자가 정한다
자신이 지금까지 받은 데이터 양을 확인하에 송신자에게 Acknowledgment Number 를 보낸다. 300번째의 데이터를 받았으면 301번째부터 보내라고 301 숫자를 보낸다.
데이터의 순서를 표기한 것이 Sequence Number 이다.
TCP는 혼잡제어 한다
데이터가 지나가는 네트워크망의 혼잡이 중요하다.
Slow Start : 연결 초기에 보낼 데이터의 양을 적게 보내면서 수신자가 잘 받는지 확인하며 데이터 송출량을 조금씩 늘린다. 이런 방식으로 현재 네트워크에서 가장 적합한 데이터 송출량을 확인한다.
빠름
비연결성
신뢰성낮음
UDP는 TCP와 다르게 3-way handshake, 4-way handshake로 연결을 설정/해제 하는 것이 아니다. 데이터를 보내고 그 데이터가 제대로 도착했는지까지 정확하게 확인하는 것은 아니다. 그렇기에 빠르지만 신뢰성이 낮다.
DNS (Domain Name System)에서 UDP 통신 프로토콜을 사용한다.
DNS는 도메인을 의미한다. 도메인은 www.naver.com 같이 사용자가 알기 쉽게 IP(인터넷에 연결되어 있는 각각의 장치를 식별할 수 있는 주소, 가변적임)를 네이밍한 것이다.
DNS는 응용계층 프로토콜이고, 전송 계층 프로토콜로 UDP를 사용한다.
WHY?
참고자료1
참고자료2
참고자료3
참고자료4
TCP Header 사진출처
UDP참고자료1
UDP참고자료2
DNS참고자료3
+인터넷서치