HTTP 통신 과정

PARK JOOCHANG·2025년 1월 20일
0

HTTP

HTTP(Hyper Text Transfer Protocol)이란 클라이언트와 서버 간 데이터를 주고 받기 위한 프로토콜이다.

HTTP 종류는 TCP와 UDP 방식이 있으며, 80 포트를 사용한다.

TCP

TCP는 연결형 서비스로 3-way handshaking 과정을 통해 연결을 설정하기 때문에 높은 신뢰성을 보장하지만, 속도가 비교적 느리다는 단점이 있다.

UDP

UDP는 비연결형 서비스로 3-way handshaking을 사용하지 않기 때문에 신뢰성이 떨이지는 단점이 있지만, 데이터 수신 여부를 확인하지 않기 때문에 속도가 빠르다는 장점이 있다.

TCP는 신뢰성이 중요한 파일 교환과 같은 경우에 쓰이고, UDP는 실시간성이 중요한 스트리밍에 자주 사용된다.

프로토콜 종류TCPUDP
연결 방식연결형 서비스비연결형 서비스
패킷 교환 방식가상 회선 방식데이터그램 방식
전송 순서전송 순서 보장전송 순서가 바뀔 수 있음
수신 여부 확인수신 여부를 확인함수신 여부를 확인하지 않음
통신 방식1:1 통신1:1 OR 1:N OR N:N 통신
신뢰성높다낮다
속도느리다빠르다
사용처통신의 안정성 및 순차적인 전달이 필요한 경우오류 검사 및 수정이 필요 없는 경우 (DNS, 스트리밍, 온라인 게임)

DNS (Domain Name System)란?
인터넷에서는 컴퓨터를 식별하기 위해 IP 주소를 사용하는데, 호스트의 도메인 이름을 호스트의 IP 주소로 바꾸거나 그 반대의 변환을 수행하는 시스템이다.

DNS 동작 원리

  1. 브라우저에 도메인을 입력한다.
  2. 컴퓨터는 컴퓨터 내부에 등록되어 있는 DNS 서버로 도메인에 해당되는 IP 주소를 물어본다.
  3. DNS 서버는 해당 도메인의 IP를 알려준다.
  4. 컴퓨터는 IP 주소에 해당하는 컴퓨터에 접속하게 된다.

HTTP 통신 과정

  1. 주소창에 URL을 입력 후 엔터를 치면 URL을 해석
  2. DNS 서버에 조회하여 IP 주소로 변환
  3. IP를 찾아 해당 IP가 존재하는 서버로 이동
  4. ARP (Address Resolution Protocol)을 이용하여 MAC 주소로 변환
  5. 웹 서버와 TCP 연결 시도
  6. 서버에 요청을 하고 응답 반환
  7. 연결 종료

1. URL 입력

http://www.google.com/path 를 치게 되면, 먼저 URL을 해석하는 과정을 거친다.

  • http:// : 통신에 사용된 프로토콜
  • google.com : 서버의 도메인
  • www : 서버의 서브 도메인
  • path : 요청 경로

2. DNS 서버에 조회하여 IP 주소로 변환

URL을 입력하면, 가장 먼저 URL과 연결된 DNS 서버로 이동하여 IP 주소를 찾는다.
만약 IP가 로컬 DNS에 캐시로 남아 있다면, DNS 서버에 접근하지 않고, 바로 요청을 보낼 수 있다.

3. IP를 찾아 해당 IP가 존재하는 서버로 이동

정확한 좌표값을 얻기 위해 고유 값인 MAC 주소를 활용하여 이동한다. 해당 IP를 찾아 이동하는 과정은 여러 라우터를 거쳐서 호스트를 찾게 되는데, 이 과정에서 동적 라우팅 프로토콜이 적용되어 라우팅 테이블에서 현재 경로를 따라 자동으로 경로를 조절하는 과정을 거친다. 여러 대의 컴퓨터와 네트워크 기기를 중계해서 상대방에게 도착한다. 그렇게 중계하는 동안 다음으로 중계할 곳의 MAC 주소를 사용하여 목적지를 찾아가게 된다.

4. ARP(Address Resolution Protocol)을 이용하여 MAC 주소 반환

ARP(Address Resolution Protocol)란, 주소 결정 프로토콜로 네트워크 상에서 IP 주소를 물리적 네트워크(MAC) 주소로 대응시키기 위해 사용되는 프로토콜이다.

IP주소는 컴퓨터 네트워크에서 장치들이 서로 인식하고 통신하기 위해 사용 되는 번호이다. 규칙에 의해 만들어진 값으로 언제든지 변할 수 있는 값이다.
반면 MAC 주소는 네트워크 세그먼트 데이터 링크 계층에서 통신을 위한 인터페이스에 할당된 고유 식별자이다. MAC 주소는 IP 주소와 달리 고유 주소이기 때문에 서버의 실제 위치를 알기 위해서 MAC 주소가 필요하다.

5. 웹 서버와 TCP 연결 시도

TCP(Trasmission Control Protocol)는 컴퓨터와 데이터 통신을 위한 규약이다.

클라이언트와 서버가 TCP 연결을 하려면 3-way handshake 과정을 거친다. 연결을 성공하면 현재 통신이 연결되어 있음을 보장한다.

3-way handshake

TCP 네트워크에서 통신하는 장치가 서로 연결이 잘 됐는지 확인하는 방법이다. 송신자와 수신자는 총 3번에 걸쳐 데이터를 주고 받으며 통신이 가능한 상태인지 확인한다.

  1. SYN(synchronize sequence numbers): 클라이언트가 서버로 임의의 시퀀스 번호를 전달
  2. SYN-ACK: 서버는 클라이언트가 서버로 전달한 시퀀스에 1을 더하여 클라이언트로 전달
  3. ACK(acknowledgement): 클라이언트는 서버에서 전달해준 시퀀스 + 1하여 다시 서버로 전달

6. 서버에 요청을 하고 응답 반환

클라이언트가 요청을 보내면, 서버는 그에 맞는 데이터와 상태를 응답한다.

7. 연결 종료

TCP 통신 종료를 위해 4-way handshake 과정을 거친다.

4-way handshake

TCP 네트워크에서 통신하는 장치의 연결을 해제하는 방법이다. 총 4번에 걸쳐 데이터를 주고 받으며 연결을 끊는다

  1. 클라이언트가 연결을 종료하겠다는 FIN플래그를 전송한다.
  2. 서버는 일단 확인메시지를 보내고 자신의 통신이 끝날때까지 기다리는데 이 상태가 TIME_WAIT 상태다.
  3. 서버가 통신이 끝났으면 연결이 종료되었다고 클라이언트에게 FIN플래그를 전송한다.
  4. 클라이언트는 확인했다는 메시지를 보낸다.
profile
모르면 알고 넘어가자

0개의 댓글

관련 채용 정보