Network

[Network] 주요 프로토콜 정리 - HTTP, HTTPS, TCP, UDP, IP, ICMP

Papya_j 2024. 7. 27. 23:30

 

오늘은 네트워크의 계층들 중 전송 계층에서 사용하는 프로토콜에 대해 설명하겠다.

전송계층은 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층으로, 쉽게 말해 데이터의 전달을 담당한다.

TCP, UDP, IP, HTTP, HTTPS, ICMP 에 대해서 설명할 예정인데 이것을 다 알기 위해서는 네트워크 계층에 대해서 알아야 한다.

네트워크는 데이터를 전송하고 수신하는 과정에서 위의 OSI Layers에 따르면 총 7개의 계층으로 나뉘게 된다.

전송시 Application layer부터 physical layer까지 데이터를 Encapsulation 하며 이를 통해 전송된 것을 다시 역방향으로 풀어서 수신하는 과정을 거친다.

이 과정에서 각각의 layer에서 고유적으로 사용하는 프로토콜이 존재한다.

- Application Layer : HTTP, HTTPS

- Transport Layer : TCP, UDP

- Network Layer : IP, ICMP

이렇게 해당되는데 각각 나누어서 설명해보겠다.

위 그림은 TCP/IP일 때 4계층으로 단순화 시킨 것까지 포함한 참고용 사진이다.


[Application Layer] - HTTP, HTTPS

http, https는 익숙한 표현일 것이다. 실제로 웹사이트 접속시 "https://www.naver.com/" 처럼 DNS주소 입력시 맨 앞에 붙는 부분이다.

위 사진을 참고하면 우리가 흔히 볼 수 있는 DNS 부분인데 이 중 Protocol에 해당하는 http는 가장 앞에 붙는 것을 알 수 있다.

 

HTTP

Hyper Text Transfer Protocol의 약자이다. 서버클라이언트의 데이터 교환을 요청 응답 형식으로 정의한 프로토콜이다.

웹 서버에서는 HTTP 서버 HTTP 서비스 포트에 대기 시키는데 일반적으로는 TCP/80 TCP/8080을 사용한다.

 

위 흐름은 HTTP를 통해 요청 및 응답했을 시에 일어나는 일련의 과정이다. 쉽게 풀어쓰자면

1a. 클라이언트는 HTTP 서버에 DNS주소를 포트(80)에 연결한다.

1b. 서버는 TCP connection (at port 80)을 기다리다가 accept 하고 클라이언트에게 알려준다.

2. 클라이언트는 request message를 TCP connection socket을 통해 보내고 원하는 object를 보낸다.

3. 클라이언트로 부터 받고 response message를 형성한다. (요청된 object와 메세지를 socket을 통해서 형성)

4. HTTP 서버가 TCP connection을 닫는다.

5. 클라이언트는 response message를 받는다. (html file, displays html을 포함)

6. 1~5 반복 (병행 진행 가능 - parallel)

 

 

따라서 요청과 응답을 TCP connection을 통해 시작하고 그 이후 file을 transmit 하는 과정을 진행한다.

 

 

HTTP 버전도 여러가지가 있는데 각 버전에 따라 non-persistent(지속성이 없는), persistent(지속성 있는), Multiplexing(동시 진행) 등의 특징이 있다. 버전에 따른 특징은 위 사진을 참고하면 된다.

persistent : connection이 끊기지 않고 유지되는 상태에서 통신이 되는 것.

mutilplexing : 여러개를 한번에 할 수 있는 것.

 

HTTP 구조

 

위 사진처럼 http는 request line / header line / (data) / body line 이러한 구조로 존재한다.

 

위 구조를 바탕으로 나타나는 실제 http 구조의 예시입니다. HTTP 버전의 정보와 그 외의 날짜, 서버 등에 대한 정보들이 담겨있다.

 

위 두 사진은 참고해두면 좋은 사항


HTTPS

HTTPS(HTTP over Secure socket layer) 의 약자이다.

기존 http는 응답과 요청 과정에서 평문으로 전달되기 때문에 누군가가 가로챈다면 중요한 정보가 노출될 수 있다.
예를 들어 POST 요청에는 login id, password 정보가 담겨있기 때문에 이것이 노출되면 중요한 문제가 생길 수 있다.

 

이걸 보완하기 위해 나온게 HTTPS이다. TLS (Trasport Layer Security) 프로토콜을 도입하여 서버와 클라이언트 사이에 오가는 메세지들을 모두 암호화한다. 따라서 중간에서 가로챘을 때 해독이 불가능하며 도청과 변조로 부터 보호된다.

'https://' 로 시작하는 모든 것들이 HTTPS를 사용하고 있다고 보면 된다.


HTTP vs HTTPS

dreamhack - 웹 해킹 HTTP

위 사진은 HTTP에서 오가는 것을 wireshark라는 프로그램을 통하여 확인한 정보이다. HTTP는 오가는 메세지에 대한 정보를 중간에서 탈취시 내용을 볼 수 있는 것을 확인할 수 있다.

 

dreamhack - 웹해킹 HTTPS

반면, 위 사진은 HTTPS에서 통신할 때 중간에서 가로챈 메세지이다. 모든 것이 암호화 되어 있어서 해석이 불가능한 것을 알 수 있다.

 


[Transport Layer] - TCP, UDP

TCP, UDP는 네트워크 계층 중 Transport Layer에서 사용되는 프로토콜이다. 주로 사용되는 두 프로토콜인 만큼 각각의 개념과 차이점을 설명해보겠다.

TCP

Transmission Control Protocol의 약자이다. -> 전송을 제어하는 프로토콜

일반적으로 TCP와 IP를 같이 사용한다. (TCP/IP)

 

TCP 특징

 

  • Point-to-Point (일대일 대응 방식)
  • 신뢰성 있는, 순차 바이트 스트림 (순서대로 전송, 하나의 스트림이 바이트 단위로 쭉 들어옴
  • Pipelined (여러 패킷을 window 사이즈에 맞게 보낼 수 있음 -> congestion, flow 컨트롤 가능)
  • Full-duplex (연결이 되어 있을 때 양방향으로 전송 가능)
  • Connection-oriented (Handshaking 과정으로 연결 및 해제 가능 -> 3-way, 4-way)

TCP의 주요 특징은 따라서 신뢰성 있는 전송과정이다. UDP보다 속도가 느리지만 3-way, 4-way를 통해 연결 및 해제가 되기 때문에 전송 과정에서 신뢰성이 있고 정확한 전송이 가능하다.

 

TCP 구조

 

전송 과정 예시

 

위의 사진처럼 간략한 구조와 간략한 전송과정 예시가 나타나있다. 그리고 연결 과정에서는 3-way handshaking 과 연결 해제 과정에서 4-way handshaking 방식을 사용하기 때문에 연결 및 해제시 신뢰성을 보장하게 된다.

다만 중간에 전송 중 데이터가 손실되었거나, 데이터를 받았다는 신호가 손실되었을 때는 재전송을 요구하기 때문에 UDP보다 느리게 되는 것이다.

 


UDP

User Datagram Protocol 의 약자이다.

TCP와 달리 비연결형 프로토콜이다.

 

UDP 특징

  • "Best effort" 서비스 (전송에 대한 역할만 best로, 그 사이 데이터 손실은 보장 X)
  • Connectionless (No handshaking -> 비연결형 : 각각의 UDP segment는 독립적으로 다뤄짐)
  • 정보 보낼 때 보낸다거나 받는다는 신호 보내지 않음
  • TCP보다 빠르다
  • 1대1, 1대N, N대N 송수신 가능
  • Checksum을 통해 최소한의 검증

UDP 구조

TCP보다 header size가 작다.

No connection이라 delay가 덜 하고, 간단하다. (불안정성)

 

* Checksum

checksum을 통해 값 도출 -> 다시한번 checksum을 통해 값 검증하는 형식

 

[TCP vs UDP]

https://mangkyu.tistory.com/15

 

자세한 TCP UDP 헤더 구성요소에 대한 정보는 다음 블로그를 참고하면 도움이 많이 된다.

https://blog.naver.com/6yujin6/221634449540

 

[네트워크 보안] 패킷 헤더 구조(TCP, IP, UDP, ARP, ICMP)

TCP Header TCP Header - Flag(code) IP Header UDP Header ARP Header ICMP Hea...

blog.naver.com

 


[Network Layer] - IP, ICMP

Network Layer에 해당되는 IP 프로토콜에 대해서 먼저 알아보고 ICMP까지 알아보겠다.

 

IP

Internet Protocol의 약자이다. 

위 사진에서 볼 수 있듯 network layer에 해당되는 IP protocol은 현재에서도 많이 사용되는 유일한 network layer의 프로토콜이다.

 

IP Datagram Format

IP Datagram Format에 해당한다. 구조 부분은 위와 같이 구성된다고 참고하면 된다.

* header 부분은 length 부터 fragment offset 까지 20바이트가 header에 해당된다고 보면 된다.

 

 

IP datagram Fragmentation, Reassembly

 

 

IP의 Datagram은 fragmentation과 reassembly가 가능한데, 이는 각 link type에 따라 정해진 MTU (Max Transfer Size)가 있기 때문이다.

그럼 fragmentation이 진행될 때 어떻게 진행될까?

 

총 datagram size = 4000 byte -> 고정 header size = 20byte

-> 3980 byte = data / MTU = 1500 byte 일 떄

 

다음과 같이 나누어 진다. data는 header size를 제외한 1480바이트가 들어가게 되는데 이 때 fragflag와 offset이 같이 변한다.

fragflag : 다음으로 이어지는 것이 있는지 없는지에 대한 1bit짜리 flag

offset : 다음 data의 시작점


IP Addressing

우리가 아는 127.0.0.1 과 같은 주소는 IP 주소에 해당된다. 8비트씩 네자리로 총 32비트짜리의 IPv4 를 봤을 때 위와 같다.

 

이 때 Subnets의 개념이 등장한다. IP address 부분 중 Subnet part와 Host part로 나뉘게 된다.

- Subnet Part : 높은 순서의 bit쪽 / 같은 subnet을 가지는 장치들은 같은 subnet 주소를 가짐 / router 통과 필요 없이 바로 서로 연결 가능

- Host part : 개개인 장치의 part

 

각각의 Class에 맞게 Host ID가 사용할 수 있는 IP part가 정해져있다. Host ID part가 쓸 수록 개인 호스트로 사용할 수 있는 부분이 많아진다. 

 


CIDR

 

 

Classless Inter Domain Routing 의 약자이다.

a.b.c.d/x 에서 x의 숫자에 해당되는 bit수 까지가 subnet part에 해당된다. (맨 앞에서 부터 세면 됨)

이를 통해 같은 subnet인지 아닌지 구분 가능하다.


ICMP

Internet Control Message Protocol 의 약자이다. (인터넷 제어 메시지 프로토콜)

IP 프로토콜을 보조하는 프로토콜을 ICMP라고 말한다. 네트워크층의 신뢰성을 보완하는 역할이다.

-> 오류 메세지를 전송받는데 주로 쓰임

 

위와 같이 Error reporting에 주 역할을 가지고 있는 프로토콜이다.

ICMP : 8바이트짜리 IP datagram 안에 들어가는 패킷이다.

  • type : ICMP 메시지 구별
  • code : message 내용에 대한 추가 정보 (type에 대한 보조 정보)
  • checksum : ICMP 위변조 확인하는 역할
  • message-specific information : type에 따라 들어가는 메세지 (가변적)

Type과 Code에 대한 설명은 위와 같다. 위 type과 code에 따라 역할이 달라진다.

 

 

 

참고

https://velog.io/@mingkimk/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EA%B3%84%EC%B8%B5%EB%B3%84-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9CLayer-Protocol

https://mangkyu.tistory.com/15

Dreamhack (web hacking)

+ 본 대학 수업 자료 참고 (Computer Network)

https://run-it.tistory.com/31

https://blog.naver.com/6yujin6/221634449540

 

 

'Network' 카테고리의 다른 글

[Network] 프로토콜 정리 - ARP, FTP, FTPS, TELNET, SSH, SSL/TLS  (0) 2024.07.28