Home 네트워크 분류, TCP/IP 4계층 (vs OSI 7계층)
Post
Cancel

네트워크 분류, TCP/IP 4계층 (vs OSI 7계층)

네트워크의 분류: LAN, MAN, WAN

네트워크는 LAN, MAN, WAN 순으로 분류된다. LAN이 가장 작은 단위, WAN이 가장 큰 단위이며 보통은 반경, 속도의 크기를 기반으로 분류한다.

LAN

Local Area Network

MAN, WAN보다 높은 안정성과 속도를 가진다.

소규모네트워크(집, 사무실) - 보통 허브나 스위치로 연결된다.

하나의 논리적 주소인 IP를 기반으로 여러개의 물리적 주소인 MAC 주소로 구별하는 네트워크라고 볼 수도 있다.

MAC?

데이터를 주고 받으려면 발송하는 쪽이나 수신하는 쪽이나 IP주소를 바탕으로 주고 받는다. IPv4, IPv6이 있는데 IPv4에서 IPv6으로 많이 넘어오는 추세이지만 아직 IPv4를 많이 쓴다.

그런데 이 IPv4는 부족하다. 그래서 효율적으로 사용해야 한다.

위 그림에서 우리는 인터넷 연결을 통해 IP주소를 하나 받은 것이고 이 IP를 기반으로 3개로 나누어 각각 MAC 주소를 부여해 구별할 수 있다. 192.168.1.1 이러한 주소가 MAC주소인 것이다.

IP는 다른 인터넷을 연결하면 계속 바뀌듯 바뀔 수 있는 주소이다.

반면 MAC은 변경이 불가능한 물리적 주소이다.

MAN

Metropolitan Area Network

대도시 통신망, 도시와 도시의 통신망을 뜻하며 2개 이상의 LAN이 연결되어 구성된다. 라우터, 브리지 등으로 연결된다.

서울지점의 Wired LAN 네트워크가 있다 가정하고 우측을 대전지점이라고 가정.

Bridge를 통해 서울의 LAN과 대전의 LAN을 연결하는 것을 표현한 것이다.

WAN

Wide Area Network

광역 통신망, 국가와 국가와의 통신망을 뜻하며 인터넷이라고도 한다. 많은 라우터를 거쳐 다른 국가와도 연결된다.

TCP/IP 4계층

장치들이 인터넷 상에서 데이터를 주고 받을 때 쓰는 독립적인 프로토콜의 집합을 의미한다.

TCP (Transmisson Control Protocol), IP (Internet Protocol)

인터넷을 통해 데이터를 보낼 때 주로 TCP와 IP를 이용해 보내기 때문에 이러한 용어가 생겼다.

애플리케이션 계층

HTTP, SMTP, SSH, FTP가 대표적이며 웹 서비스, 이메일 등 서비스를 사람들에게 제공하는 계층이다.

전송계층

TCP, UDP가 대표적이며 애플리케이션 계층에서 받은 메시지를 기반으로 세그먼트 또는 데이터그램으로 데이터를 쪼개고 데이터가 오류없이 순서대로 전달되도록 도움을 주는 층이다.

인터넷 계층(network)

IP, ICMP, ARP가 대표적이며 전송 계층에서 받은 세그먼트 또는 데이터그램을 패킷화하여 한 노드에서 다른 노드로 전송할 때 목적지로 전송하는 역할을 한다.

링크계층(네트워크 접속 계층)

링크 계층은 전선, 광섬유, 무선 등으로 데이터가 네트워크를 통해 물리적으로 전송되는 방식을 정의한다. 데이터링크계층과 물리계층을 합친 계층이다.

각각의 계층은 독립적이다. 각 계층이 수정이 되어도 다른 계층에 영향을 끼치지 않는다.

캡슐화와 비캡슐화

네트워크에서의 캡슐화란 송신자가 수신자에게 데이터를 보낼 때 데이터가 각 계층을 지나며 각 계층의 특징들이 담긴 헤더들이 붙여지는 과정을 의미한다.

예를 들어 전송계층은 TCP 헤더, 네트워크 계층은 IP 주소 헤더를 추가하는 것이다. 비캡슐화는 이러한 과정의 역이다. 수신자는 이렇게 캡슐화 된 데이터를 받아 역순으로 제거하면서 응용계층까지 도달하는 것을 말한다.

PDU(Protocol Data Unit)

TCP/IP 4계층을 기반으로 설명했을 때 각 계층의 데이터 단위를 의미한다.

  • 애플리케이션 계층 : 메시지
  • 전송 계층 : 세그먼트(TCP), 데이터그램(UDP)
  • 인터넷 계층 : 패킷
  • 링크 계층 : 프레임(데이터 링크 계층), 비트(물리 계층)

세그먼트, 패킷, 프레임

  • 세그먼트 : 데이터를 적절한 크기로 쪼갠 조각
  • 패킷 : 세그먼트에 SP와 DP가 포함된 IP 헤더가 붙은 형태의 조각
  • 프레임 : MAC주소 헤더와 CRC/체크섬 트레일러가 붙은 조각

SP는 송신자의 IP주소, DP는 수신자의 IP주소이다. (Source IP, Destination IP)

CRC/체크섬 트레일러는 데이터의 오류 감지를 위한 수학점 함수가 적용된 값이다. 링크의 오류(과도한 트래픽 등)로 인한 데이터 손상을 감지하는 역할을 한다.

vs OSI 7계층

OSI 계층은 애플리케이션 계층을 3개로 쪼개고 링크 계층을 데이터 계층, 물리계층으로 나눠서 표현하는 것이 다르다. 각각의 역할은 동일하다.

TCP/IP 4계층 - MTU, MSS, PMTUD?

MTU(Maximum Transmission Unit)

데이터를 계속 쪼개면서 데이터를 송수신하게 되는데 이렇게 데이터가 쪼개질 때의 기준점이다.

즉 MTU는 네트워크 통신을 할 수 있는 가장 큰 PDU의 크기를 의미한다.

이 때 MTU는 송수신하는 모든 장치의를 고려해야 한다. 한쪽 장치의 MTU를 1500으로 잡았을 때, 다른 한쪽의 MTU가 1400이라면 제대로 송수신이 안될 수 있고 패킷이 분할될 수 있다.

패킷이 분할되지 않으면 전달이 안된다.

IPv6은 분할을 허용하지 않고 IPv4는 헤더의 정보에 따라 분할이 허용될 수도, 안될 수도 있다.

MSS(Maximum Segment Size)

MTU는 IP헤더와 TCP헤더의 크기까지 합치지만 MSS는 TCP에서 사용할 수 있는 데이터의 크기이자 TCP 헤더, IP헤더를 뺀 크기를 말한다. 즉 세그먼트의 최대크기이다.

일반적으로 MTU는 1500바이트이고 MSS는 1460바이트이다. 그렇기 때문에 MTU가 1500이라도 데이터는 보통 1460바이트 이하의 크기로 보내야 전달이 된다.

PMTUD(Path MTU Discovery)

수신자와 송신자의 경로 상에서 장치가 패킷을 누락했을 때, 테스트 패킷의 크기를 낮추면서 MTU에 맞게끔 반복해서 보내는 과정을 의미한다.

애플리케이션 계층

HTTP(HyperText Transfer Protocol)

처음에는 서버와 브라우저간에 데이터를 주고 받기 위해 설계된 프로토콜이다. 지금은 브라우저 뿐 아니라 서버와 서버간 통신에도 많이 이용된다.

특징

  1. HTTP는 헤더를 통한 확장이 쉽다.

예를 들어 헤더값에 어떤 값을 넣어서 HTTP 요청을 한다고 가정했을 때 쉽게 다른 값을 추가해 요청할 수 있다.

  1. HTTP는 stateless하다.

동일한 연결에서 연속적으로 수행되는 두 요청 사이에서 상태를 저장하지 않는다. 서버와 클라이언트가 HTTP를 통해 메시지를 주고받는다고 가정했을 때 서버는 클라이언트의 상태, 즉 누구인지 저장하지 않는다.

SSH(Secure Shell Protocol)

보안이 이루어지지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜이다.

ex) AWS로 배포를 할 때 내 로컬 PC에 있는 코드를 AWS 서버로 보내고 AWS에서 구동시키게 되는데 코드를 보내는 과정에 보안이 이루어지지 않는다. 이 때 사용하는 것이 ssh이다.

pem 키(private)를 기반으로 내가 구동한 서버라는 증명을 하게 된다. (로그인과 비슷)

FTP(File Transfer Protocol)

노드와 노드간에 파일을 전송하는데 사용되는 프로토콜. 최근에는 파일을 암호화해서 전송하는 FTPS 또는 SFTP로 대체되고 있다.

SMTP(Simple Mail Transfer Protocol)

인터넷을 통해 메일을 보낼 때 사용되는 프로토콜.

전송 계층

TCP (세그먼트 unit)

가상회선교환방식이다.

가상 회선(검은색)을 기반으로 순서대로 수신 호스트까지 데이터를 보낸다.

오류 검사 메커니즘

  1. 재전송 : 시간 초과 기간이 지나면 서버는 전달되지 않은 데이터에 대해 재전송을 시도한다.
  2. 체크섬 : 체크섬을 통해 무결성을 평가한다. 즉, 송신된 데이터의 체크섬과 수신된 데이터의 체크섬 값을 비교해서 올바르게 왔는지를 확인한다.

** TCP의 헤더는 20~60바이트로 가변적이다.

UDP (데이터그램 unit)

데이터패킷 교환 방식이다.

순서 상관없이 그냥 보낸다.

오류검사는 단순한 체크섬만 지원한다. 재전송 X.

UDP의 헤더는 8비트 고정이다.

TCP vs UDP

 TCPUDP
패킷 교환 방식가상회선패킷교환방식데이터그램패킷교환방식
신뢰성OX
오류검사재전송, 체크섬체크섬
패킷의 순서보장OX
헤더길이20~60바이트의 가변길이8비트 고정 길이
연결 보장연결을 보장한다. 3웨이 핸드셰이크로 연결을 맺고 4웨이 핸드셰이크로 연결을 해제하는 작업이 필요하다.연결을 보장하지 않는다. 그냥 데이터를 보낸다. 연결을 유지하고 해제하는데 드는 비용이 없다.
브로드캐스트지원XO
속도느림빠름

인터넷 계층

IP, ARP

다른 포스트에서 추후 다룬다.

ICMP (Internet Control Message Protocol)

노드와 노드사이에서 통신이 잘 되는지 확인할 때 사용하는 프로토콜.

즉 데이터를 교환하는데에는 사용되지 않는다.

일반적으로 테스팅에 사용된다.

3-웨이 핸드셰이크, 4-웨이 핸드셰이크

3-웨이 핸드셰이크

3개의 단계를 통해 연결을 성립시킨다.

  1. SYN 단계 : 클라이언트는 서버에 클라이언트의 ISN을 담아 SYN을 보낸다.
  2. SYN + ACK 단계 : 서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 보내며 승인번호로 클라이언트가 준 ISN값 + 1을 보낸다.
  3. ACK 단계 : 클라이언트는 서버가 준 ISN + 1한 값인 승인번호를 담아 ACK를 서버에 보낸다.

ISN : TCP 기반 통신에서 각각의 연결의 충돌을 방지하기 위한 고유번호.

서버는 Listen이라는 상태가 되어야 Client가 보내는 SYN을 받을 수 있다.

이렇게 서버와 클라이언트 간의 연결 설정 과정이 있기 때문에 TCP는 신뢰성이 있다고 표현하고 UDP는 반대로 신뢰성이 없다고 표현한다.

4-웨이 핸드셰이크 & TIME_WAIT

4단계를 거친 연결 해제 과정

  1. 클라이언트가 연결을 닫으려고 할 때 FIN으로 설정된 세그먼트를 보낸다. 그리고 클라이언트는 FIN_WAIT_1 상태로 들어가고 서버의 응답을 기다린다.
  2. 서버는 클라이언트로 ACK라는 승인 세그먼트를 보내고 CLOSE_WAIT 상태에 들어간다. 클라이언트가 세그먼트를 받으면 FIN_WAIT_2 상태로 들어간다.
  3. 서버는 LAST_ACK 상태가 되며 일정 시간 이후에 클라이언트에게 FIN이라는 세그먼트를 보낸다.
  4. 클라이언트는 TIME_WAIT 상태가 되고 다시 서버로 ACK를 보내서 서버는 CLOSED 상태가 되며 이후 클라이언트는 어느 정도의 시간을 대기한 후 연결이 닫힌다.

TIME_WAIT 있는 이유?

  1. 지연패킷을 받기 위함.
  2. 연결이 올바르게 닫힌 상태로 만들기 위해 존재.

예를 들어 CLOSED가 아닌 LAST_ACK 상태가 유지되어 있으면 다음에 서버를 다시 연결할 때 오류가 나타나게 된다.

This post is licensed under CC BY 4.0 by the author.