[Frontend] HTTP 인터넷 프로토콜

houndhollis·2025년 6월 25일
4
post-thumbnail

IP(Internet Protocol)

내가 만약에 어떤 친구에게 'hello world' 라는 메세지를 보내고 싶으면 어떻게 할 수 있을까?

일단 친구의 PC 주소를 알아야 메세지를 전송할 수 있다 🏠

IP는 인터넷상에서 기기의 주소를 나타내며, 데이터를 패킷(Packet) 단위로 쪼개서 전송한다.

IP 패킷

나의 IP랑 목적지의 IP를 넣어 인터넷 서버로 던지면 노드 끼리 전달을 하며, 최종적으로 목적지 IP로 가게된다.

여기서의 IP 프로토콜의 한계점이 나타난다.

IP 프로토콜의 한계점

1. 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송한다.
2. 비신뢰성
- 중간에 패킷이 사라질 경우패킷이 순서대로 도착하지 않는 경우
3. 프로그램 구분 불가
- 같은 IP를 쓰는 여러 애플리케이션을 구분하지 못한다.

인터넷 프로토콜 스택의 4계층

애플리케이션 계층 - HTTP, FTP
전송 계층 - TCP, UDP
인터넷 계층 - IP
네트워크 인터페이스 계층

TCP(Transmission Control Protocol)

1. 연결지향 - TCP 3 way handshake (가상 연결)
- 신뢰성이 필요한 상황에서는 대부분 TCP를 사용한다.
2. 데이터 전달 보증
- 반드시 도착한다.
3. 순서 보장
- 보낸 순서대로 도착하게 만든다.

TCP 관련 패킷 정보

  • 출발지 Port
  • 목적지 Port
  • 전송 제어
  • 순서
  • 검증 정보

TCP 3 way handshake

  1. 클라이언트에서 서버로 SYN 을 보낸다
  2. 서버에서 SYN + ACK 를 보낸다
  3. 다시 클라이언트에서 ACK 를 보낸다.
  4. 그 다음 데이터 전송
    SYN : 접속 요청 ACK : 요청 수학 참고: 3. 최근에는 최적화가 되어서 ACK 와 함께 데이터 전송 가능
  • TCP 연결이 되었다고 해도 진짜 연결이 아닌 개념적으로 연결된 것이다. 물리적으로 연결이 된것은 아닌 가상연결 상태이다.

데이터 전달 보증

TCP 가 붙게되면 데이터를 전송하면 서버에서 데이터 잘 받았다는 신호를 보내준다.
만약 응답이 없으면 뭔가 문제가 있는거다.

순서 보장

  1. 패킷1, 패킷2, 패킷3 순서로 전송
  2. 패킷1, 패킷3, 패킷2 순서로 도착
  3. 다버리고 패킷 2번부터 다시 보내! 라고 응답이 온다,
    물론 서버에서 최적화 할수도 있다고 한다.

UDP(User Datagram Protocol)

하얀 도화지에 비유(기능이 거의 없음)
1. 연결지향 - TCP 3 way handshake X
2. 데이터 전달 보증 x
3. 순서 보장 x

데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름

정리

  • IP와 거의 같다 + PORT + 체크섬 정도만 추가
  • 애플리케이션에서 추가 작업 필요

TCP 는 다 좋지만 3-way handshake 를 할려면 시간이 걸린다. 데이터 양도 크고, 전송 속도도 빠르게 만들기 어렵다 하지만 최적화 하고싶을 경우 UDP를 사용하면 되고 HTTP3에서는 UPD 프로토콜을 사용하기도 한다.

PORT

만약 한번에 둘 이상 연결해야 한다면? 아까 IP의 한계점에서도 볼 수 있었다.
같은 IP 내에서 프로세스를 구분하는데 사용한다.

TCP/IP 패킷에는 출발지의 PORT 와 목적지의 PORT 가 있다. 쉽게 말해 IP는 목적지의 서버를 찾는것이고

PORT는 그 서버의 실행중인 어플리케이션을 찾는 용도이다.

IP가 '아파트 단지'라면, PORT는 그 안의 '동호수'다.
하나의 서버(IP 주소)에서 여러 애플리케이션이 동시에 돌아갈 수 있는데, PORT를 통해 각각 구분할 수 있다.

PORT 번호

0 ~ 65535 : 할당 가능 0 ~ 1023 : 잘 알려진 포트, 사용하지 않는 것이 좋다

  • FTP - 20, 21
  • TELNET - 23
  • HTTP - 80
  • HTTPS - 443

DNS(Domain Name System)

IP는 기억하기가 너무 어렵다 200.200.200.2 ? 너무 길다

IP는 변경될 수 있다. 과거 IP만 기억하다가 신규 IP로 바뀔경우 접근이 힘들다

  • 전화번호부
  • 도메인 명을 IP 주소로 변환

DNS 서버에 도메인을 등록을 할 수 있다.
1. 도메인으로 google.com 을 찾는다
2. DNS 서버에서 IP 를 보내준다
3. IP 패킷을 보내 목적지 IP로 찾는다.

도메인은 우리가 쉽게 기억할 수 있는 이름이고, 실제로는 이 이름을 DNS 서버가 IP로 바꿔준다.

profile
한 줄 소개

8개의 댓글

comment-user-thumbnail
2025년 7월 6일

혹쉬 잘 알려지지 않은 포트번호 0~65535 아니고 1024~부터 아닌가요?

1개의 답글
comment-user-thumbnail
2025년 7월 6일

글 너무 잘봤습니다! 통신에 대한 기본개념을 놓치기 쉬운데 잘 정리해주셔서 덕분에 복습하고갑니다~!

답글 달기
comment-user-thumbnail
2025년 7월 6일

인터넷 프로토콜, 네트워크.. 사파(?) 개발자인 저에겐 항상 취약한 부분인 것 같습니다..
글 잘 읽고 갑니다..!

답글 달기
comment-user-thumbnail
2025년 7월 6일

IP와 PORT를 아파트와 동호수에 비유한 설명과 각 프로토콜의 한계와 장단점이 명확하게 구분되어 있어서 좋았습니다 !!! 덕분에 다시 한번 복습하는 계기가 되었습니다!

답글 달기
comment-user-thumbnail
2025년 7월 7일

으앗,, 저는 port랑 protocol은 항상 공부했는데도 잘 잊어버리는 것 같아요 ,
이번에 다시 영웅님 글을 읽으면서 예전에 공부했던 개념을 떠올릴 수 있게 되는 계기가 되었습니당!!
글 너무 잘 봤습니다~!

답글 달기
comment-user-thumbnail
2025년 7월 13일

다 익숙한데 UDP, 그리고 UDP와 TCP와의 차이는 다시 리마인드 했네요. 잘보고 갑니다.

답글 달기
comment-user-thumbnail
2025년 8월 5일

오랜만에 다시 리마인드 하네욥!!
미뤄놨던 강의가 생각나는 글이었습니다...~!

답글 달기