Network Basis

[Network] 통신 프로토콜의 발전에 대한 간략 정리글 (IP, TCP/UDP, HTTP)

DevPing9_ 2022. 3. 29. 19:23
이 글은 각 통신 프로토콜이 어떠한 필요에 의해 만들어졌는지
간단하게 역사를 되짚어 보는 글입니다.  

자세한 정보들은 해당 포스팅에서 얻은 키워드로 검색하시길 바래요 :D

아래는 각 계층에서 데이터를 어떻게 가공하는지 이해를 돕기위하여
제가 직접 만들었습니다 😏

각 통신계층에서 데이터를 어떻게 끼워넣는지에 대한 간략한 그림

사실 위 그림의 각 계층에서 Data에 추가되는 정보들은 
흐름의 이해를 돕기 위해 간략히 표현한 것이며, 실제로는 더 다양하다.

 

 

 

OSI 7 Layer & TCP/IP 모델 설명글 보러가기

글이 거의 리팩토링 되듯이 계속 수정하면서
난잡하게 정리되어있긴 합니다 ㅠㅠ... (추후 정리예정) 
 

[Network] 네트워크 통신의 기본 구조 ( OSI 7 Layer, TCP/IP)

# OSI 모델 (Open Systems Interconnection)  - 1982년경, 네트워크 아키텍처를 하나로 통일하고자 만든 네트워크 표준규격  - 너무 복잡해서 현재 사용되지 않지만, 네트워크 기능 분석, 설계 및 학습에 널

developer-ping9.tistory.com

 

통신프로토콜의 발전 (from Network Layer)

 

IP (Internet Protocol)

1세대 프로토콜

보내는이의 IP Address 와 받는이의 IP Address 를 패킷에 포함하여 인터넷 망으로 던져버린다.

유효한 IP Address 인지, 목적지의 컴퓨터가 켜져있는지, 랜선이 연결되어있는지 검증없이
일단 인터넷 망에 던져서 라우터들을 돌며 받는이의 IP Address 까지 전달되는 방식

 

IP 프로토콜의 한계

비연결성
> 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷이 전송 됨

비신뢰성
> 중간에 패킷이 사라져도 알 수 없고, 패킷의 도착순서를 동기화 할 수 없음

프로그램 구분
> 같은 IP더라도 통신하는 어플리케이션의 PORT 별로 전달하지 못함

 

 

TCP (Transmission Control Protocol)

기존데이터에 [출발지 Port, 목적지 Port, 전송 제어, 순서, 검증 정보등]의 정보가 추가로 삽입됨

[ 특징 ]
1. 연결지향
> 3 way handshake 로 연결유무 판단 후 전송

2. 데이터 전달 보증
> 데이터 전송시 데이터를 잘 받았다는 응답(Response)가 내려오기 때문에
   만약 패킷이 유실되어 데이터가 전달이 안됬다면 눈치 챌 수 있다.

3. 순서 보장
> 송신자가 패킷1, 2, 3 순서로 전송하고 수신자가 패킷 1,3,2 로 받았다면
   구현에 따라 달라지겠지만 일반적으로 잘못 도착한 3번부터 다 폐기하고 2번부터 다시 재요청을 함 

통신의 대부분이 TCP 를 기반으로 사용한다.

 

UDP (User Datagram Protocol)

TCP 의 특징인 연결지향, 데이터 전달 보증, 순서 보장을 모두 하지 않는다.
IP와 거의 같으며 포트 정보, 체크섬 정도만 추가되어 있다.

보통 개발자 입맛에 맞게 전송계층 프로토콜을 재정의 하고 싶을 때 사용하는 인터페이스 같은 존재이며,
순서와 패킷소실의 영향이 적은 실시간 중계등에 사용되는 프로토콜이다.

구글의 QUIC 도 UDP 에서 출발했다.

 

QUIC 이 뭐야?

구글에서 만들어 낸 전송계층(Transport Layer)의 프로토콜으로 UDP를 재정의한 프로토콜이다.
첫 연결에만 handshake 가 발생하며, 그 이후는 캐시에 저장 된 UUID 로 식별하여 handshake 없이 바로 연결한다.
 

[Network] HTTP 프로토콜의 발전 (HTTP 1.1 vs HTTP2) 그리고 구글(HTTP3, QUIC)

HTTP 의 성능개선이 어떤식으로 이루어졌는지 알아보자..! 🧐 [Network Layer] HTTP 는 Application Layer(5th Layer) 의 프로토콜이며, TCP/UDP는 Transport Layer(4th Layer) 의 프로토콜이다. 자세한 내용은 아..

developer-ping9.tistory.com

 

 

 

 

# Reference 

1. 인프런 김영한님의 강의 

2. 히히님의 OSI 7 Layer

3. 수 많은 블로그들 (수십개를 본거같아 링크를 달지 못해 죄송합니다 ㅠ.ㅠ)

 

 

 

 

 

 

728x90