본문 바로가기
Computer Science/네트워크

[네트워크/인터넷 프로토콜 스택] IP Protocol, UDP, TCP, PORT, DNS 설명정리

by SIXXXX_ 2022. 3. 1.
728x90

HTTP 기본

 

웹은 HTTP 기반으로 만들어졌다ㅎ

아니 모든 애플리케이션은 HTTP 기반이다.

(*OSI 7 계층에서 Application계층(7계층) 은 HTTP 프로토콜을 쓴다)

 

그래서 HTTP 기술을 사용하는 개발자는 거의 대부분의 개발자들,

모바일 앱, 웹 프론트엔드, 백엔드 개발자들이고 이들은 HTTP 에 대한 지식을 이해할 필요가 있다.

 

 

HTTP 에 대해 자세히 알기 전에 인터넷 네트워크를 탐색해보자!

 

인터넷 네트워크는

  • 인터넷 통신
  • IP(Internet Protocol)
  • TCP, UDP 
  • PORT
  • DNS

가 있다.

 

하나씩 알아보자!

 

 

1. 인터넷 통신

컴퓨터는 인터넷으로 연결되는데 인터넷에는 노드(일종의 서버)라는 지점들의 연결망으로 이뤄져있다.

따라서 Client(클라이언트) 와 Server(서버)는 노드로 연결된 망을 타고 정보를 주고 받는다.

 

 

2. IP(Internet Protocol, 인터넷 프로토콜)

  • 예를 들면 IP : 100.100.100.1 이런식으로 구성되어 있다.
  • 지정한 IP주소(IP Address)에 데이터를 전달한다.
  • Packet(패킷)이라는 통신단위로 데이터를 전달한다: 한마디로 IP 패킷이 전송데이터를 감싸는 형태
  • IP 패킷 == 출발지의 IP +  목적지 IP +  기타 ~  + 데이터

순서를 보자.

이제 Client 컴퓨터에서 Server로 정보를 전달할때,

출발지 IP(본인의 IP)와 목적지 IP(서버 IP)를 패킷으로 감싼 전송데이터 3가지 정보를 가지고 전달한다.

노드로 된 경로를 타고 서버에 도착한다.

 

< IP 프로토콜의 한계 >

  • 비연결성(Connectionless): 패킷을 받을 대상이 없거나 서비스 불능 상태(ex. pc가 꺼져있는 상태 등)이어도 패킷을 전송한다.
  • 비신뢰성(Unreliable) : 중간에 패킷이 사라지거나?, 패킷이 순서대로 안온다면?
  • 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면? (ex. 게임서버, 유튜브서버, 음악사이트서버 등 동시에 여러개를 쓴다면?)

예를 들면,

보통, IP주소가 1500byte정도 되면 정보를 끊어서 보낸다 -> 서로 다른 노드를 탈 수 있다 -> 패킷 전달 순서에 문제가 발생한다.

 

그래서 우리는 TCP(Transmission Control Protocol) or UDP(User Datagram Protocol)를 쓴다

 

 

Network OSI 7 계층과 TCP/IP&nbsp; 프로토콜 4계층

cf. <OSI 7계층 : OSI 7 Layer>

* OSI : Open Systems Interconnection의 약자, 개방형 시스템

서로 이질적인 네트워크 간의 연결에 어려움이 많아 호환성의 결여를 막기 위한 것으로

ISO(국제 표준화 기구)에서는 OSI 참조 모델을 제시.

 

  • 응용 계층 - HTTP, FTP, NFS, 텔넷, SMTP, SNMP
  • 표현 계층 - XDR, SMB, AFP
  • 세션 계층 - TLS, SSL
  • 전송 계층 - TCP, UDP, RTP
  • 네트워크 계층 - IP, ICMP, IGMP, ARP, DDP
  • 데이터 링크 계층 - 이더넷, 토큰링, 무선랜, ATM
  • 물리 계층 - 전선, 전파, 광섬유, 리피터, 모뎀 

 

 

계층을 나눈 이유

ⓐ 통신이 일어나는 과정을 단계별로 알 수 있고

ⓑ 오류가 났을때 유지보수 파악이 쉽다.

 

계층이란?

상하구조관계를 가진다. 하위계층이 완벽하게 작동되어야 상위계층이 작동한다.

 

 

<인터넷 프로토콜 스택의 4계층: Internet Protocol Stack 4 Layer, TCP/IP Protocol Suit>

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

 

- 각 계층의 할일들(애플리케이션, OS, 네트워크)

  • Application 계층  : Hello, World!라는 메세지를 생성해서 SOCKET 라이브러리를 통해 OS계층으로 전달한다.
  • OS 계층 : TCP와 UDP를 가지고 있는데 먼저 SOCKET 라이브러리에 TCP정보를 묶어서 생성한다(메세지 데이터를 포함) 그리고 IP패킷을 생성한다(TCP 데이터, 메세지 데이터 포함)

(바깥)

IP패킷

TCP 데이터

메세지 데이터

(안)

  • 네트워크 인터페이스 : LAN드라이버와 LAN장비, 그리고 인터넷을 통해 서버로 연결되는 통로인 LAN 카드가 있다.

- HTTP메세지를 감싼 패킷들의 형태

 

============ Ethernet Frame ==========

------------------------ IP패킷 -----------------------

++++++++++++ TCP 데이터  ++++++++++++

 

                       메세지 데이터

 

+++++++++++++++++++++++++++++++++

--------------------------------------------------------

=================================

 

 

< IP 패킷  VS  TCP / IP 패킷 >

  • IP 패킷 정보 : 출발지 IP, 목적지 IP, 전송데이터, 기타
  • TCP/IP 패킷 정보 : 출발지 IP, 목적지 IP, 출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증 정보, 전송데이터, 기타(TCP관련 정보가 들어간다)

 

* Transport 계층의 패킷 : Segment

 

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

특징

  • 연결지향 : TCP 3 way handshake(가상연결)
  • 데이터 전달 보증
  • 순서보장
  • 신뢰할 수 있는 프로토콜
  • 데이터의 흐름 제어와 혼잡제어를 수행한다.
  • 패킷의 추적 및 관리를 담당
  • HTTP 1.x , HTTP 2.x 는 TCP를 주로 사용한다.
  • network congestion avoidance algorithm 을 사용한다.

* 흐름제어: 송신 측과 수신 측의 데이터 속도차이를 해결하기 위한 기법 

* 혼잡제어 : 송신 측의 데이터 전달과 네트워크의 데이터 처리 속도 차이를 해결하기 위한 기법

 

 

< TCP 3 way handshake(가상연결) > 

4단계로 이뤄지는 연결

TCP 3 way- handshake

 

* SYN : 접속요청

* ACK : 요청수락

 

1.  SYN (Client    Server)

2.  SYN + ACK (Client ← Server)

3.  ACK (Client   Server)

4.  데이터 전송

 

 

 

3-2. UDP (User Datagram Protocol : 사용자 데이터 프로토콜)

특징

  • 기능이 거의 없는 흰도화지라 생각하면 된다.
  • 비연결형 프로토콜
  • IP와 비슷하고 PORT(하나의 IP 에 여러가지 패킷을 구분해주는 기능을 가짐, 시작port와 도착port를 가진다) 와 체크섬(오류검출), 3가지를 가진다.
  • 애플리케이션에서 추가 작업이 필요하다.
  • 연결지향 - TCP 3 way handshake X
  • 데이터 전달 및 순서가 보장되지 않지만 단순하고 빠르다.
  • 매번 트렌드마다 쓰는게 다른데, HTTP3는 UDP를 사용한다.
  • 최근의 스트리밍 서비스, 온라인 게임의 경우 UDP를 사용한다. 
  • 빠르고 multiplexing 정보와 demultiplexing 정보가 있다.

TCP는 전송속도가 느리고 최적화가 불가능해서 UDP로 뭔가를 만들어 사용한다.

 

4. PORT

한번에 둘 이상의 서버를 연결해야한다면?

  • 애플리케이션 구분의 용도로 쓴다.
  • 0 ~ 65535 할당가능
  • 0 ~ 1023 : 잘 알려진 포트로 사용하지 않는 것이 좋다.
  • FTP - 20, 21
  • TELNET - 23
  • HTTP - 80
  • HTTPS - 443

 

 

5. DNS (Domain Name System, 도메인 네임 시스템)

  • IP는 기억하기가 어렵고ㅎ 변경이 가능하다.
  • 도메인은 네트워크상에서 컴퓨터를 식별하는 호스트, 웹주소를 말한다.
  • Application Layer Protocol이다. Transport Layer Protocol을 하나를 사용해야되는데(TCP와 UDP 중) DNS request는 UDP Segment에 꼭 들어갈 정도로 작다. 
  • 그래서 DNS라는 도메인 네임 시스템을 만듬!
  • 쉽게 말해 전화번호부라 생각하기

- 순서

Client가 DNS 서버(Server)에 접속, 도메인명(Domain Name)으로 IP(주소)를 찾고, 이를 응답하면 IP로 접속한다.

 

 

 

REFERENCE