HTTP 학습 - 인터넷 네트워크 (IP, TCP/UDP, PORT, DNS)

이주호·2025년 4월 16일

HTTP 학습

목록 보기
1/2

IP(Internet Protocol)

  • 지정한 IP 주소 (IP Adress)에 데이터를 전달한다.
  • 패킷(Packet)이라는 통신 단위로 데이터 전달한다.

IP 패킷 정보

출발지 IP, 목적지 IP, 기타 정보를 IP 패킷에 담아서 전송한다.

클라이언트 패킷 전달

출발지 IP 주소와 목적지 IP 주소, 기타 정보를 담은 패킷이 인터넷 노드들을 통해서 목적지 IP로 간다.

서버 패킷 전달

서버 패킷도 마찬 가지인데 이 때 전달받은 인터넷 노드들과는 다른 노드들을 통해서 전달될 수 있다.

IP 프로토콜의 한계

  • 비연결성 : 패킷을 받을 대상이 없어도 패킷 전송
    컴퓨터가 꺼져 있거나, 주소가 이상해도 패킷은 일단 정송된다.
  • 비신뢰성 : 중간에 패킷이 사라지거나 순서대로 안 와도 확인할 방법이 없다.
  • 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면 구분하는 문제가 있다.

TCP/UDP

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

프로토콜 계층


1. 메시지 생성
2. SOCKET 라이브러리를 통해 OS에 전달
3. OS에서 TCP 정보 생성, 메시지 데이터 전달
4. IP 패킷을 생성 (TCP 데이터 포함)

TCP/IP 패킷 정보

TCP는 출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증 정보 등을 담고 있다. 그리고 그 안에 전송 데이터를 담고 있다.

TCP 특징

전송 제어 프로토콜 (Transmission control Protocol)

  • 연결지향 : TCP 3 handshake(가상 연결)
  • 데이터 전달 보증 : 누락되거나 손실되면 알 수 있다.
  • 순서 보장

TCP 3 way handshake


SYN : 접속 요청
ACK : 요청 수락

  1. 클라이언트가 서버에 접속 요청(SYN)을 보낸다.
  2. 서버는 클라이언트의 접속 요청을 수락(ACK) 하면서 서버도 클라이언트에게 접속 요청(SYN)을 보낸다.
  3. 클라이언트는 서버의 접속 요청을 수락(ACK)한다.
    (ACK와 함께 데이터 전송 가능)
    -> 3 way handshake

데이터 전달 보증

클라이언트에서 데이터를 전송하면 서버에서 데이터를 잘 받았다고 응답을 보낸다. 응답이 없다면 제대로 전송이 안 됐다는걸 인지할 수 있다.

순서 보장

클라이언트가 패킷1,2,3을 보냈는데 순서가 이상하게 오면 서버가 클라이언트에게 순서가 이상한 다음부터 다시 보내라고 요청을 한다.

UDP

사용자 데이터그램 프로토콜(User Datagram Protocol)
TCP와 같은 계층.

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

  • IP와 거의 같지만 PORT(애플리케이션 구분 위해 사용)와 체크섬(데이터 정보 검증) 정도만 추가

  • 애플리케이션에서 추가 작업 필요

  • 웹브라우저에서 HTTP 통신할 때 UDP가 요즘 뜨고 있다. (빨리 전송하기 위해)


PORT

한 번에 둘 이상 연결해야 하면?

-> 서버 안에서 돌아가는 애플리케이션들을 구분하는 것!
(출발지 PORT, 목적지 PORT)

  • 0 ~ 65536 할당가능
  • 0 ~ 1023 : 잘 알려진 포트, 사용하지 않는 것이 좋음
  • FTP - 20,21
  • TELNET -23
  • HTTP - 80
  • HTTPS - 443

DNS

-> IP는 기억하기 어렵고, 변경될 수도 있다.
DNS도메인 네임 시스템 (Domain Name System) : 도메인 명을 IP 주소로 변환

  • DNS 서버에 도메인명과 ip를 저장.
  • 사용자는 도메인명을 통해 도메인 서버에 접근, 도메인 서버가 해당 ip로 응답 후 그 ip로 접속하게 된다.
profile
코드 위에서 춤추고 싶어요

0개의 댓글