IP, TCP, UDP, PORT, DNS 개념

염겨레·2021년 5월 5일
1

HTTP 웹 기본 지식

목록 보기
1/8
post-custom-banner

이 글은 김영한님의 인프런 강의인 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 요약한 것입니다.

1. IP(인터넷 프로토콜)

IP(인터넷 프로토콜)의 역할

  1. 지정한 IP 주소(IP Address)에 데이터를 전달한다.
  2. 패킷(Packet) 단위로 데이터를 전달한다. (패킷에는 출발지 IP, 목적지 IP 등의 정보가 있다)

IP의 한계

  1. 비연결성: 패킷을 받을 대상이 없거나 서비스가 불능 상태여도 패킷을 전송한다. (클라이언트는 서버가 패킷을 받을 수 있는 상태인지 모른다)
  2. 비신뢰성: 중간에 패킷이 사라질 수도 있고(중간에 서버가 문제가 발생해 전달이 안될 수 있음), 여러 개의 패킷을 보내면 순서대로 도착하지 않을 수 있다(먼저 전송된 패킷이 늦게 도착할 수 있음).
  3. 프로그램 구분: 같은 IP를 사용하는 애플리케이션이 둘 이상이면? 구분할 수 없다.

2. TCP(전송 제어 프로토콜, Transmission Control Protocol)

(참고) 인터넷 프로토콜의 4계층

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

TCP 특징

TCP 세그멘트에는 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등에 대한 내용이 있다.

  1. 연결 지향: TCP 3-way handshake(가상 연결, 옛날에 전화선을 물리적으로 연결하는 것은 아니다)
  2. 데이터 전달 보증: 클라이언트에서 데이터를 전송하면 서버에서 잘 받았다고 응답을 보내줌
  3. 순서 보증 : (예시) 패킷1, 2, 3으로 보냈는데 서버에 패킷1, 3, 2 순서로 온다면 패킷2부터 다시 보내라고 알려줌
  4. 신뢰할 수 있는 프로토콜
  5. 현재 대부분 TCP 사용

TCP 3-way handshake

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

  1. SYN (클라이언트 -> 서버)
  2. SYN + ACK (클라이언트 <- 서버)
  3. ACK (클라이언트 -> 서버)

위 3에서 ACK와 함께 데이터를 같이 보낼 수도 있다.

3. UDP(사용자 데이터그램 프로토콜, User Datagram Protocol)

UDP 특징

  1. 갖추고 있는 기능이 거의 없음
  2. TCP 3-way handshake X
  3. 데이터 전달 보증 X
  4. 순서 보장 X
  5. 그렇지만 단순하고 빠름!
  6. IP와 거의 유사하다. (+Port, +체크섬)

(참고) HTTP3에서 UDP를 사용하는 중!

4. PORT

한 번에 둘 이상 연결해야 한다면? 예를 들어 게임을 하면서 디스코드로 통화를 한다면? IP로는 응답이 게임에 필요한 것인지, 디스코드에 필요한 것인지 분간할 수 없다. 여기서 PORT는 같은 IP 내에서 프로세스를 구분하기 위해 필요하게 된다. 따라서 TCP/IP 패킷에는 출발지 IP, 목적지 IP와 더불어 출발지 PORT, 목적지 PORT가 존재한다.

아파트로 구분하면 IP는 A동, PORT는 A동에 사는 각 호수들이다.

PORT는 0~65535에 할당이 가능하고, 0~1023는 흔히 잘 알려진 포트라 사용하지 않는 것이 좋다.
예를 들어)

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

5. DNS(Domain Name System)

IP는 숫자로 이루어져 있고, 변경될 여지가 있어서 기억하기 어렵다. 그래서 일종의 전화번호부 역할을 하는 DNS 서버에 IP를 등록해 사용할 수 있다. 변경될 시 DNS 서버에 등록된 IP를 변경하면 된다.

profile
차근차근 나아가는 시나브로 개발자
post-custom-banner

0개의 댓글