-
[Network] 통신 프로토콜의 발전에 대한 간략 정리글 (IP, TCP/UDP, HTTP)Network Basis 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. 인프런 김영한님의 강의
3. 수 많은 블로그들 (수십개를 본거같아 링크를 달지 못해 죄송합니다 ㅠ.ㅠ)
728x90'Network Basis' 카테고리의 다른 글
[Network] HTTP의 모든 것 (HTTP특징, URI 설계, 상태코드, 리다이렉션, 헤더) (0) 2022.04.06 [Network] URL? URI? URN? (0) 2022.04.06 [Network] 정적웹과 동적웹의 정확한 정의를 고민해보자 (Feat. AWS & GitHub Pages) (0) 2022.02.22 [Network] 데이터의 직렬화(Serialization) (0) 2022.02.17 [Network] TCP/UDP 포트 목록 (well-known port, registerd port, dynamic port) (0) 2022.02.07