[백엔드 로드맵 - NW] TCP/IP 4계층 VS OSI 7계층

Sierra·2022년 8월 2일
0

Backend-Roadmap

목록 보기
24/43
post-thumbnail
post-custom-banner

Intro

이번 포스팅의 주제는 네트워크 계층.
그 중에서 TCP/IP 4계층과 OSI 7계층에 대해 써 보도록 하겠다.

Internet Protocol Suite

우리가 흔히 사용하는 인터넷 프로토콜의 모음들이다.
Application Layer 의 DHCP, FTP, HTTP, IMAP 부터 해서 Transfort Layer 의 TCP, UDP 등 이러한 프로토콜을 통틀어서 Internet Protocol Suite라고 부른다.

TCP/IP 4계층

흔히 TCP와 IP가 가장 많이 쓰이므로 Internet Protocol Suite는 TCP/IP 프로토콜 슈트라고도 부른다.

기존의 OSI 7계층과는 다르게 TCP/IP 계층은 Application Layer, Presentation Layer, Session Layer를 Application Layer로 통합한다.
그리고 DataLink Layer와 Physical Layer를 Network Access Layer로 통합한다. 그러므로 총 4개의 계층 구조를 가진다.

어떻게 구별하든 각 레이어 별로 어떤 프로토콜이 존재하는 지 정도는 알아 둘 필요가 있다. 정리하면 아래와 같다.

  • Application Layer
    • DNS, TFTP, TLS/SSL, FTP, HTTP, IMAP, IRC, NNTP, POP3, SIP, SMTP, SNMP, SSH, Telnet, ECHO, Bittorrent, RTP, PNRP, rlogin...
  • Transfort Layer
    • TCP, UDP, DCCP, SCTP
  • Internet Layer
    • IP, ARP, ICMP
  • Network Access Layer
    • Ethernet, WIFI, Token ring, PPP, SLIP, FDDI, ATM...

Application Layer

말 그대로 응용프로그램이 사용되는 프로토콜 계층.
실질적으로 사람에게 서비스를 제공하는 층이다. 예를 들면 Email(POP3, SMTP)
FTP와 SSH, HTTP, DNS 등 자주 들어 본 프로토콜이 서비스된다.
혹시나 헷깔릴 수 있으니 정리하면 아래와 같다.

  • FTP
    • 장치와 장치 간 파일을 전송하는 데 사용됨
  • SSH
    • 흔히 말하는 Secure SHell. 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 프로토콜.
    • Telnet을 대체하는 용도로 개발 된 프로토콜
  • HTTP
    • 웹사이트를 이용하는데 사용되는 프로토콜
  • DNS
    • 도메인 네임과 IP 주소를 매핑해주는 프로토콜

Transport Layer

송신자와 수신자를 연결하는 통신 서비스를 제공하는 계층.
연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공한다.
Application Layer와 Internet Layer 사이의 데이터가 전달 될 때 중계자 역할을 하는 계층이다.
대표적인 프로토콜로는 TCP, UDP가 있다.

  • TCP

    • 패킷 사이 순서를 보장하고 연결 지향 프로토콜을 사용해서 연결을 진행함.
    • 신뢰성을 구축하여 수신 여부를 확인하며 가상회선 패킷 교환 방식을 사용함.
    • 3-way handshake 작업을 통해 신뢰성을 확보함.
      • SYN 단계에서 클라이언트는 서버에 클라이언트의 ISN(새로운 TCP 연결의 첫 번째 패킷에 할당 된 임의의 시퀀스 번호)을 담아 SYN을 보냄.
      • SYN+ACK 단계에서 서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 보내며 승인번호로 클라이언트의 ISN + 1을 보냄
      • ACK 단계에서 클라이언트는 서버의 ISN + 1 한 값인 승인번호를 담아 ACK를 서버에 보냄.

    • 연결 해제 시 4-way handshake 작업을 시행함
      • 클라이언트가 연결을 끊으려 할 떄 FIN으로 설정 된 세그먼트를 보냄. 클라이언트는 FIN_WAIT_1 상태로 들어가고 서버의 응답을 기다림.
      • 서버는 클라이언트로 ACK 승인 세그먼트를 보냄. 그리고 CLOSE_WAIT 상태로 들어감. 클라이언트가 세그먼트를 받으면 FIN_WAIT_2 상태에 들어감.
      • 서버는 ACK를 보내고 일정 시간 이후에 클라이언트에 FIN이라는 세그먼트를 보냄
      • 클라이언트는 TIME_WAIT 상태가 되고 다시 서버로 ACK를 보내서 서버는 CLOSED 상태가 됌. 이후 클라이언트는 어느 정도의 시간을 대기한 후 연결이 닫히고 클라이언트와 서버 간에 연결이 해제됌.
      • TIME_WAIT으로 인해 지연 패킷이 발생 시 생기는 문제를 대비할 수 있고 두 장치의 연결이 제대로 닫혔는 지 확인 할 수 있다.
  • UDP

    • 순서를 보장하지 않고 수신 여부를 확인하지 않음.
    • 단순히 데이터만 전달하는 데이터그램 패킷 교환 방식을 사용함.

Internet Layer

장치로부터 받은 네트워크 패킷을 IP 주소로 지정 된 목적지로 전송하기 위해 사용 되는 계층이다.
대표적인 프로토콜로는 IP, ARP, ICMP가 있다.

Network Access Layer

실질적으로 데이터를 전달하는 전선, 광섬유, 무선 등의 계층이며 장치간에 신호를 주고받는 규칙을 정하는 계층이다.

이 계층과 관련 된 지식 중 반드시 알아 둬야 할 개념들을 좀 정리하자면 다음과 같다.

  • 유선 LAN
    • Full Duplex 통신
      • 양쪽 장치가 동시에 송수신 할 수 있는 방식
    • CSMA/CD
      • 데이터를 보낸 후 충돌이 발생한다면 일정 시간 후 재 전송하는 방식
  • 무선 LAN
    • Half Duplex
      • 서로 통신은 가능하지만 동시엔 통신할 수 없다.
    • CSMA/CA
      • 반 이중화 통신 중 하나로 장치에서 데이터를 보내기 전에 캐리어 감지 등으로 사전에 가능한 한 충돌을 방지하는 방식을 사용함.
  • BSS
    • Basic Service Set
    • 단순 공유기를 통해 네트워크에 접속하는 것이 아닌 동일 BSS 내에 있는 AP들과 장치들이 서로 통신이 가능한 구조를 말함.
    • 하나의 AP를 기반으로 구축되어 있으므로 사용자가 다른 곳으로 자유롭게 이동하며 통신하는 건 불가능함.
  • ESS
    • Extended Service Set
    • 하나 이상 연결 된 BSS 그룹
    • 한 장소에서 다른 장소로 이동하더라도 중단 없이 네트워크 연결이 가능함
  • Ethernet Frame
    • 네트워크 엑세스 계층에선 이 이더넷 프레임을 통해 받은 데이터의 에러를 검출하고 캡슐화 함.
    • Preamble : 이더넷 프레임의 시작
    • SFD : 다음 바이트부터 MAC 주소 필드가 시작 됨. (여기까지 Header)
    • DMAC, SMAC : 수신, 송신 MAC 주소
    • EtherType : 데이터 계층 위의 계층인 IP 프로토콜을 정의함
    • Data / Payload : 전달 받은 데이터
    • FCS / CRC : 에러 확인 비트

Data Encapsulation

클라이언트가 서버에 데이터를 요청한다면 Data Encapsulation 과정을 거쳐서 전달 된다. 반대 방향도 마찬가지.
각 계층에 맞는 헤더들이 붙었다 떨어지면서 각각의 계층에서 처리 되어야 할 작업들이 처리되어 데이터가 전달 된다.

PDU

Protocol Data Unit 이라고 부른다. 네트워크의 어떠한 계층에서 계층으로 데이터가 전달 될 때 한 덩어리의 단위다. 제어 관련 정보들이 담긴 헤더, 데이터를 의미하는 페이로드로 구성되며 계층마다 이것들을 부르는 명칭이 조금 씩 다르다.
예를 들면 Application Layer는 메시지, Transport Layer에서는 Segment, Datagram 이런 식으로 말이다.

HTTP를 통해 전달 한 후 받은 Request를 개발자 도구를 통해 확인 해 보면 Application Layer 상에서 PDU 가 어떻게 생겼는 지 알 수 있다.

Date: Tue, 02 Aug 2022 07:52:10 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=UTF-8
Strict-Transport-Security: max-age=31536000
Accept-CH: Sec-CH-UA-Platform
Accept-CH: Sec-CH-UA-Platform-Version
Accept-CH: Sec-CH-UA-Full-Version
Accept-CH: Sec-CH-UA-Arch
Accept-CH: Sec-CH-UA-Model
Accept-CH: Sec-CH-UA-Bitness
Accept-CH: Sec-CH-UA-Full-Version-List
Accept-CH: Sec-CH-UA-WoW64
BFCache-Opt-In: unload
P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
Content-Encoding: gzip
Server: gws
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Set-Cookie: 1P_JAR=2022-08-02-07; expires=Thu, 01-Sep-2022 07:52:10 GMT; path=/; domain=.google.com; Secure; SameSite=none
Set-Cookie: AEC=AakniGP9UyFgjeMK0OMa5SovnDAqjDb-SA9EAzCkGMX4ytNRC8jJd2m8v0U; expires=Sun, 29-Jan-2023 07:52:10 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax
Set-Cookie: NID=511=mb13M5bEPzLI_XBKJX9Sd1WWdpos_12Gi3lJ4EAooFIVWluWfs10IHOVg1UrNw8dU5anUxLFCj-taFmFIbV6ZYMY70aMGDAwyL4I1S6In6v6Urcsvfd9Rnu9vMrBUNMEahyWnf8fs8TgFSXRXP4t4FGduh8FU8C7Ty2YQn7zvJU; expires=Wed, 01-Feb-2023 07:52:10 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=none
Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
Transfer-Encoding: chunked

위는 google에 실제로 HTTP 명령을 보냈을 때 돌아온 Header 값들이다.

OSI 7계층과 차이점?

단순히 계층을 나누는 기준의 차이도 있지만, TCP/IP 4 계층은 TCP/IP와 관련 된 프로토콜을 설명하는 데 도움이 된다면, OSI 7계층은 SSL, TLS에 대해 설명할 때 더욱 적합하다.

Outro

지금까지 TCP/IP 4계층과 OSI 7계층을 비교 해 보았고, TCP/IP 4계층의 계층 별 특징, 프로토콜, 그리고 주요한 용어들을 정리 해 보았다.

다음 포스팅은 IP 주소에 대해서 포스팅 해 보도록 하겠다.

Reference

https://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%EB%84%B7_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C_%EC%8A%A4%EC%9C%84%ED%8A%B8

profile
블로그 이전합니다 : https://swj-techblog.vercel.app/
post-custom-banner

0개의 댓글