본문 바로가기
교육, 학습/인프런_김영한

HTTP 웹 기본 지식 - IP 프로토콜, TCP/UDP, PORT, DNS

by 개발하는 경제학도 2022. 5. 14.

강의 소개

인프런 김영한 스프링 완전 정복 시리즈 중 '모든 개발자를 위한 HTTP 웹 기본지식'정리입니다.

자세한 내용을 수강하고 싶으시다면 김영한 님 강의 수강을 적극 추천합니다.


인터넷 네트워크

 

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

지정한 IP 주소에 데이터를 전달할 수 있도록 하는 규칙

패킷(Packet)이라는 통신 단위로 데이터 전달

** 패킷: 데이터를 보내는 출발지 IP, 목적지 IP, 전송할 데이터 등으로 구성

 

  • IP 프로토콜의 한계

비연결성: 목적지(대상 서버)가 데이터를 받을 수 있는 상태인지 여부를 확인하지 않고 패킷을 전송.(패킷 받을 대상이 없거나, 서비스 불능 상태 등)

비신뢰성: 중간에 패킷이 사라지는 경우, 패킷이 전달한 순서대로 오지 않는 경우 발생 가능.

** 비신뢰성은 IP 프로토콜로 해결 불가능하다. 따라서 TCP 프로토콜로 해결한다.

프로그램 구분 불가: 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 2개 이상인 경우 구분할 수 없다.

 

 

2. TCP / UDP

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

출처: 인프런 - 모든 개발자를 위한 HTTP 웹 기본지식

IP에 TCP를 올려서 보완해주는 개념이다.

 

  • 프로토콜 계층

출처: 인프런 - 모든 개발자를 위한 HTTP 웹 기본지식

 

출처: 인프런 - 모든 개발자를 위한 HTTP 웹 기본지식

이렇게 내가 보내려는 데이터(예시에서는 Hello)에 TCP, IP, Ethernet frame(LAN 카드에 들어있는 MAC 주소 등의 물리적 정보들 포함)이 한 겹씩 추가되어 LAN 카드를 통해서 나가게 된다.

 

  • 패킷
    • IP 패킷: 전송할 데이터를 IP 패킷(출발지 IP, 목적지 IP 등의 데이터)으로 감싼다.
    • TCP/IP 패킷: 위의 IP 패킷 안에 TCP 세그먼트(출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등)를 넣고 보내고 싶은 전송 데이터를 넣는다. 따라서 IP만으로 해결이 되지 않았던 순서 제어 문제 등이 해결된다.

출처: 인프런 - 모든 개발자를 위한 HTTP 웹 기본지식

 

  • TCP 특징(전송 제어 프로토콜)
    • 연결 지향: 먼저 연결을 한 다음에 데이터를 보낸다. TCP 3 way handshake(가상연결. 즉, 전용 랜선이 연결된 것이 아니라 논리적인 연결이 된 상태)
      • TCP 3 way handshake: 클라이언트와 서버 간 SYN(접속 요청), ACK(요청 수락)을 주고받아 상호 신뢰성 있는 통신 가능
    • 데이터 전달 보증: 클라이언트가 데이터를 전송하면 서버에서 데이터를 전송받았다고 응답을 해준다.
      • ex. 내가 보낸 패킷이 중간에 누락되었을 경우 내가 알 수 있다.
    • 순서 보장: 클라이언트가 데이터를 보낸 순서대로 서버에 도착하지 않았으면, 서버가 잘못받은 데이터를 다시 보내라고 클라이언트에게 요청한다.
    • 신뢰할 수 있는 프로토콜: TCP 데이터 안에는 전송 제어, 순서, 검증 정보 등이 포함되어 있다.
    • 현재 대부분의 애플리케이션이 TCP 사용

 

  • UDP 특징(사용자 데이터그램 프로토콜)
    • 기능이 거의 없다(TCP의 연결 지향, 데이터 전달 보증, 순서 지향 모두 UDP에서는 X)
    • 단순하고 빠르다.
    • IP와 거의 같은데, IP에 PORT(1개의 IP에서 사용하는 다수의 애플리케이션 각각의 패킷을 구분하기 위한 것), 체크섬(데이터 검증) 정도가 추가된 느낌이다.
    • 애플리케이션에서 추가 작업이 필요하다: 기능이 거의 없기 때문에 바꿀 수 있는 게 많다.

 

 

3. PORT

IP는 목적지를 구분하는 것, PORT는 그 목적지 서버 내의 애플리케이션을 구분하는 용도이다.

출처: 인프런 - 모든 개발자를 위한 HTTP 웹 기본지식

PORT는 같은 IP내에서 프로세스를 구분할 수 있게 한다. ex. 1개의 아파트(서버), 00동 00호(PORT)

TCP/IP 패킷 안에 보낼 데이터 외에도 출발지와 도착지에 대한 IP 정보, PORT정보가 있기 때문에 이렇게 PORT번호를 알 수 있다.

 

  • 포트로 할당 가능한 숫자들

출처: 인프런 - 모든 개발자를 위한 HTTP 웹 기본지식

 

 

4. DNS

IP의 문제점(IP는 사람이 외우기 어렵다, IP는 변경될 수 있다)때문에

DNS(도메인 네임 시스템)가 있다.

 

DNS: 도메인 명을 IP주소로 변환 ex. 전화번호부

 

출처: 인프런 - 모든 개발자를 위한 HTTP 웹 기본지식

먼저 DNS 서버에 특정 IP에 대한 도메인 명을 등록한다.

클라이언트가 도메인 명을 통해 서버에 접속하고 싶을 때는 아래와 같은 순서로 접속할 수 있다.

1) 클라이언트가 도메인 명(ex. google.com)을 DNS 서버에서 검색

2) DNS서버에서 해당 도메인 명을 가진 IP주소를 반환하여 응답

3) 클라이언트는 전달받은 IP주소로 서버에 접속

나중에 서버는 IP주소가 바뀌면 DNS 서버에 바뀐 IP주소를 업데이트하기만 하면 된다.

이렇게 기존의 IP주소 문제는 DNS로 모두 해결 가능해진다.

댓글