Dev/Network, Web

[Network] HTTP 프로토콜, 3-way handshaking

헝그리둘기 2022. 10. 31. 10:00

HTTP (HyperText Transfer Protocol)란 인터넷에서 클라이언트가 요청을 보내고, 서버가 요청을 받아 응답한 후 연결을 끊는 형태의 데이터 통신 규약이다. 그럼 어떤 형태로 데이터를 보내는지 확인해보자.

Request Message

요청 메시지는 위와 같이 네 부분으로 분리되어 있으며 각 부분에 들어가는 내용은 아래와 같다.

1. start line에는 요청 메서드, path, 프로토콜 버전

2. header에는 호스트와 클라이언트 정보 등

3. empty line은 공백라인

4. body 에는 메시지의 내용

 

Response Message

위 그림은 응답 메시지의 형태인데, 요청 메시지와 다른점은 start line에 프로토콜 버전, 응답코드, 응답상태가 들어간다는 점이다.

 

전송 계층(TCP/IP, UDP) 중 연결지향적인 TCP 기반으로 만들어진 HTTP도 TCP와 마찬가지로 클라이언트-서버 간 연결을 수립할 때 3-way handshaking, 그리고 연결을 종료할때 4-way handshaking을 사용한다. 덕분에 전송 패킷의 순서를 보장하고 수신 여부를 확인할 수 있지만, UDP에 비해 상대적으로 속도가 느리다는 단점이 있다.

 

3-way handshaking의 과정은 아래와 같으며 SYN은 연결수립요청, ACK은 응답이라고 보면 된다.

1. 클라이언트->서버 SYN 전송

2. 서버->클라이언트 SYN+ACK 전송

3. 클라이언트->서버 ACK 전송

 

4-way handshaking의 과정은 아래와 같으며 FIN은 세션종료요청, ACK은 응답이라고 보면 된다.

1. 클라이언트->서버 FIN 전송

2. 서버->클라이언트 ACK 전송

3. 서버->클라이언트 FIN 전송

4. 클라이언트->서버 ACK 전송