우선 TCP와 UDP 를 알아보기전에 알아야 될 인터넷 네트워크에 대한 지식이 있는데,
수많은 인터넷 네트워크에 대한 지식이 있고 알아야할 게 많지만
이 포스팅에서는 간단한 지식만 알아보겠다.
인터넷 네트워크에는 일단 5가지가 있다.
일단 인터넷 통신을 하는 컴퓨터와 서버간 어떻게 통신할까?
이런식으로 수많은 인터넷 노드 들을 거쳐서 클라이언트 -> 서버로 이동하는 방식이다.
인터넷 프로토콜 역할
예를들어, 아래같은 상황이 있다.
출발 IP패킷: 100.100.100.1 인 곳에서
Hello, world!
라는 정보를 적어서
목적 IP패킷: 200.200.200.2 으로 전달한다.
이렇게 클라이언트와 서버 사이의 인터넷 노드들이 패킷을 전송한다.
하지만 IP프로토콜의 한계가 있는데,
이러한 문제가 있다.
그래서 이러한 문제를 해결하는게
이다.
이 TCP 프로토콜은 인터넷 프로토콜 스택의 4계층
애플리케이션 계층 - HTTP, FTP
전송 계층 - TCP, UDP
인터넷 계층 - IP
네트워크 인터페이스 계층 중 전송 계층에 들어가있는데,
이 프로토콜의 애플리케이션층에서
이 과정을 거친다.
네트워크 인터페이스 LAN장비(LAN카드)를 이용해 인터넷으로 서버에 전달한다.
이 그림에 나온것처럼 PORT가 들어가서, IP 프로토콜에서 발생하는 문제들을 해결한다.
TCP의 뜻은 전송 제어 프로토콜(Transmission Control Protocol)이란 뜻인데,
이러한 특징을 가진다.
TCP 3 way handshake란?
TCP/IP프로토콜 을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에
정확한 전송을 하기위해 상대방 컴퓨터와 전송 전 세션을 수립하는 과정이다.
SYN : 접속을 요청
ACK : 요청 수량
위의 사진은 tcp 3 way handshake 하는 과정을 나타냄.
여기서 주고받는 과정에서 3. ACK
와 함께 데이터 전송이 가능하다.
UDP의 뜻은 사용자 데이터그램 프로토콜(User Datagram Protocol) 이다.
이 UDP 는 영상재생 또는, DNS 조회와 같은 시간에 민감한 전송을 위해 인터넷을 통해 사용된다. (속도가 매우 빠르기 때문)
이 UDP는 TCP에 비해 매우 속도가 빠르지만, 안정성이 떨어지는 차이가 있다.
프로세스를 거치지 않기때문, 대신 그저 단순히 데이터만 전송 하는것이다.
이 포스팅으로 TCP/UDP에 대한 모든 것을 알순 없지만, 핵심에 대한 내용들을
알아보았다.
Reference
모든 개발자를 위한 HTTP 웹 기본지식