놓치고 넘어간 것.03 OSI 계층과 http 변천사

Sal Jeong·2022년 8월 13일
0
post-thumbnail

공부하기 전 알고 있던 것들

  • http 1.0 사양은 한 번에 하나의 비동기를 처리해서 여러 비동기 요청이 들어올 때 많이 느리다.
  • http 연결은 tcp/ip 프로토콜로 이루어진다.
  • http 2.0이 도입되며 여러 성능이 향상되었다.
  • OSI 7계층의 경우 현재는 TCP/IP 모델이라는 것으로 윗 부분이 통합된 것으로 알고 있다.

1. OSI Model

그렇다면 2.0에서는 어떤 일이 있었길래 저 문제가 해결되었나??

그 전에, 먼저 네트워크의 기반인 OSI 7계층 모델부터 확인해 보아야 한다.

기억이 가물가물한데...

OSI 모델(Open Systems Interconnection model)은 Iso국제인증기관이 1984년에 발표한 것으로 네트워크 통신 과정을 7단계로 도식화 한 것이다.

OSI 모델은 총 7개의 Layer로 이루어져 있다.

  1. Physical Layer

데이터 자체를 송신/수신하는 물리적 기기에서 일어나는 작용으로, bit(1001101..)로 이루어진 데이터를 상위 Data Link Layer에 통신 케이블/블루투스/와이파이와/네트워크 카드 같은 Transport Medium을 사용하여 보내고/받는다.
이 때 사용되는 프로토콜로는
DSL(Digital Subscriber Line) - 전화선으로 인터넷을 제공하는, 우리가 아는 유선 인터넷
RS-232 - 시리얼통신이라고도 하며, 비트 단위로 데이터를 일방으로 통신하는 규약
UTP cable(Unshielded Twisted Pair) - 가장 자주 보이는 모뎀선

  1. Data Link Layer

두 연결된 노드에서 데이터를 전송하는 작용이다. 1.에서 하드웨어가 bits로 전송하는 데이터 혹은 패킷을 어떤 것인지는 확인하지 않고(error-free) 2.으로 보내게 되는데, 이때 자신의 주소를 특정하기 위해서 2.에서는 MAC 주소를 사용한다.
데이터 링크 레이어는 크게 두 계층으로 나누어지는데, LLC(Logical Link Control)과 상술한 MAC(Media Access Control)이다. LLC는 1.에서 전달받은 패킷의 에러를 검사하고, 비동기 프레임을 정렬한다. MAC에서는 데이터 전달 과정 자체를 통제하고 LLC가 정리한 데이터를 다른 노드로 전송하는 것을 최종 결정한다.

  1. 피지컬에서 bit 데이터를 전송하면 -> 2. 데이터 링크에서 프레임(FRAMES)으로 만든다. -> 헤더와 트레일러를 추가한다 -> 3. MAC이 다음 노드로 전송한다.

이 방식으로 가장 유명한 사례는 요즘도 잘 쓰이는 이더넷이다.

  1. Network Layer

네트워크 레이어는 전달받은 데이터를 최대한 빠른 경로를 탐색해 다른 네트워크 레이어에 전달하는 역할을 한다. 이것을 라우팅(Routing)이라고 하며, 이 때 전달자와 수신자의 IP 주소를 헤더에 저장한다.
또한 헤더에 소스 주소와 목적지 주소 역시 추가해 준다.
네트워크 레이어에 사용되는 프로토콜은
IPv4 - 32비트 숫자 체계, 일반적으로 보는 ip 주소
IPv6 - 3.4×10^8 길이, 128비트 숫자로 지정되는 새로운 ip주소
ARP(Address Resolution Protocol) - IP 주소와 아래 단계의 MAC 주소를 매칭시키는 역할
ICMP(Internet Control Message Protocol) - IP 패킷 통신이 실패햇을 때, 에러를 명시하는 프로토콜.
등이 있다.

  1. Transport Layer

    트렌스포트 레이어는 네트워크 레이어와 어플리케이션 레이어를 중개하는 역할이다. End-to-End 데이터 전달을 위해, 패킷을 작은 조각으로 나누는 Segmentation을 수행한다. 각 조각인 Segments에 Header를 넣는 작업도 수행하며, 만약 데이터를 받는 쪽이라면 반대로 세그먼트화된 정보를 합치는 역할을 수행한다.
    프로토콜은
    UDP(User Datagram Protocol) - 일방향 데이터 전송, 도메인, 동영상 스트림 등에 사용
    TCP(Transmission Control Protocol) - 쌍방향 전송, HTTP, Email 등 신뢰성이 보장되는 서비스

  2. 세션 레이어

세션 레이어에서 인증과 동기화 작업이 일어난다.
목적지에 데이터를 전달하기 위해 TCP/IP 세션을 생성, 유지보수한다.(Syncronization)
세그먼트 별로 포인트를 만들고 에러가 발생했을 때, 에러가 발생한 포인트로부터 다시 전송을 시도한다. 또한 세션이 어떻게 의사소통을 할 지 결정하는데,
Half-Duplex - 양방향으로 통신하지만, 한번에 한쪽 방향으로만 전송 가능
Full-Duplex - 양쪽 방향으로 통신이 가능
가 있다.

  1. Presentation Layer

프레젠테이션 레이어는 마지막 계층인 Application Layer와 Session Layer 사이에 전달되는 데이터를 문법적으로 재정의 하는 기능을 수행한다. 그래서 Translation Layer라고도 부른다.
파일 인코딩
또한 암호화와 복호화를 통해 데이터 보안을 담당하는데, 이곳에서 SSL 혹은 TSL 프로토콜이 수행된다.(IP주소 -> 도메인)

  1. Application Layer

맨 마지막 계층이다. 우리가 사용하는 앱과 아주 밀접하며, 네트워크 위 계층과 소통하여 데이터를 받거나 보내고, 이것을 유저에게 UI로 보여주는 역할을 한다.
사용되는 프로토콜은
HTTP - 사실은 이 이야기를 하고 싶었는데, 역시 간단하게 정리할 내용이 아니다보니..
FTP - TCP/IP 환경에서 데이터를 교환하기 위한 프로토콜
SNMP - 동일한 네트워크에 접속된 기기들을 제어하고 확인하기 위한 프로토콜
DNS - 사람이 읽을 수 있는 도메인을 IP 주소로 교환한다.

위 ARP는 이렇게 넘어간 IP 주소를 MAC 주소로 변환한다.
등이 있다.

저번 글의 url을 타이핑했을 경우 일어나느 일에서

브라우저가 DNS 서버에 도메인을 쿼리하면, 해당 정보가 있는 노드가 도메인을 ip 주소의 형태로 알려주게 된다.

그렇게 되면 TCP/IP 연결로 바뀌어 목적지와 계속 요청을 수행하게 된다.

새롭게 바뀐 계층과 Http는 다음에 다시 정리하여야 할 것 같다.

참고한 링크
https://www.baeldung.com/cs/http-versions

https://www.baeldung.com/cs/osi-model

https://www.digitalocean.com/community/tutorials/http-1-1-vs-http-2-what-s-the-difference
profile
Can an old dog learn new tricks?

0개의 댓글