[네트워크] HTTP 기초 - TCP와 UDP
시작하기
0. 들어가기전에
HTTP를 못 본 사람은 없을 것이다.
그러나 정확히 아는 사람은 없을 것이다.
이 포스트 시리즈는 “모든 개발자를 위한 HTTP 웹 기본 지식 강의를 듣고 정리한 것이다.
1. IP주소
IP주소는 인터넷 상 주소 규약이다. 인터넷을 연결하고 내 컴퓨터에서 데이터를 쏘며는 패킷으로 정보가 IP 주소에 따라 인터넷 유선을 타고 다른 컴퓨터로 간다.
여기에는 몇가지 문제점이 있는데,
- 비연결성
- 비신뢰성
- 프로그램 구분
패킷의 양이 클 경우 패킷을 쪼개서 보내게 되는데 이 나눠진 패킷 순서가 뒤죽박죽 도착할 위험이 있다.
그래서 나타난 것이 TCD, UDP이다.
2. TCP, UDP
2.1 TCP
위의 문제를 TCD 규약이 어느정도 해결해준다.
인터넷 프로토콜 스택의 4계층 다음과 같다
- 애플리케이션 계층 : HTTP,FTP
- 전송 계층 : TCP, UDP
- 인터넷 계층 : IP
- 네트워크 인터페이스 계층
데이터를 전송하면 데이터에 TCP 세그먼트가 씌워지며 출발지 PORT, 목적지 PORT, 전송제어, 순서, 검정 정보가 담겨진다. 그리고 그 바깥에 IP 패킷이 씌여지고 출발지 IP, 목적지 IP 가 담겨진다. 그래서 데이터가 잘못 갈 위험이나 순서가 뒤바뀌는 문제는 해결된다.
이런 전송 제어 프로토콜인 TCP는 다음과 같은 특징을 가진다.
- 연결지향 : TCP 3 way handshake(가상연결)
- 데이터 전달 보증
순서 보장
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
TCP 3 way handshake는 맨 처음 클라이언트가 SYN(접속 요청)을 보내면 서버도 SYN+ACK(요청 수락)을 보낸다. 이에 응답받은 클라이언트가 ACK를 보내며 총 3번 보내는 과정을 말한다. 이렇게 3번 신호를 주고 받는 과정을 거친후 연결을 확인하고 데이터를 보낸다.
3 way handshake를 통해 TCP는 데이터 전달 보증, 패킷 순서 보증을 가능하게 한다.
2.2 UDP주소
- 사용자 데이터그램 프로토콜(User Datagram Protocol)
반면 UDP는 TCP와 같은 3 way handshake 절차 없이 거의 IP처럼 일방적으로 통신한다. IP와 차이점은 단지 포트 정보와 체크섬 정도 추가됐다는 점이다. 포트정보는 내 컴퓨터 안에서 게임, 음악, 동영상 등 작업들을 구분하는 역할이다. 이렇게 추가된 정보가 적기때문에 UDP는 데이터 전달을 보증하지도, 순서를 보증하지도 않는다. 다만 TCP보다 속도가 빠르다는 장점이 있다.
최근에는 http3에서 TCP를 더 경량화한 UDP를 쓰면서 각광을 받고 있다고 한다.