net(1)

혼자공부하는 네트워크 4장 ( 190p ~ 249p)

OSI 7계층 복습

계층 계층 이름 PDU(데이터 단위)
1계층 물리 계층 (Physical Layer) Bits (비트)
2계층 데이터 링크 계층 (Data Link Layer) Frame (프레임)
3계층 네트워크 계층 (Network Layer) Packet (패킷)
4계층 전송 계층 (Transport Layer) Segment (세그먼트, TCP)
Datagram (UDP)
5계층 세션 계층 (Session Layer) Data (혹은 Message)
6계층 표현 계층 (Presentation Layer) Data (혹은 Message)
7계층 응용 계층 (Application Layer) Data (혹은 Message)

567을 뭉뚱그려 응용계층이라고도 함(인터넷 5계층)

4-1 : 전송 계층의 개요: IP의 한계와 포트

3- 네트워크 계층의 대표적 프로토콜인 IP는 UnReliable, non-connection 통신의 한계가 있다.

신뢰할 수 없는 통신과 비연결형 통신

  • 무엇을 Reliable이라고 하는가?
    1. 패킷이 손상되거나 중복되어도 확인 X
    2. 재전송 X
    3. 순서 보장도 X

이런걸 최선형 전달 이라고도 한다, 이런 “best effort”는 최선을 다해보겠지만, 장담 못한다는 의미.

  • 비연결형의 의미 : 말그대로 연결 안하고 그냥 던진다는 의미

  • 그럼 왜 IP는 이렇게 했을까?

  • 성능때문에, 패킷의 빠른 송수신을 위해서.
  • Reliable이 항상 요구되는것은 아님. 동영상 스트리밍, 실시간 영상통화는 속도가 우선이라 중간에 한 두 패킷정도는 없어도 됨.

      책에서 나오진 않았으나, 전공과정에서 설명하기를, 계층형 구조의 특징상 아래에 있는건 아무것도 안할수록 좋다. 예를들어, 3계층인 IP가 빡빡하게 구현되어 있을수록 위쪽 계층의 TCP나 UDP는 자동으로 IP의 빡빡함을 따라간다.
    

IP의 한계를 보완하는 전송계층(Transport Layer)

1. 전송계층은 연결형 통신을 가능하게 한다. (TCP만)

2. 전송계층은 신뢰성 있는 통신을 가능하게 한다. (TCP만)

Application 계층과의 연결다리, 포트

포트의 정의

패킷이 3계층에 의해 end to end로 일단 내 컴퓨터에 도착했다고 치면, 이걸로 끝나는게 아니라 브라우저로 가는건지 다른 애플리케이션으로 가는건지 정해야 한다. 이때 필요한게 PORT이다.

포트의 분류

4계층에서는 PORT를 사용해 특정 애플리케이션을 식별한다. 패킷 내 수신지 포트와 송신지 포트를 통해 송수신지 호스트의 애플리케이션을 식별한다.

TCP, UDP모두 송수신지 포트번호를 포함한다. 포트번호는 16Bit로 표현되며 0~65535번까지 존재한다.

구분 포트 번호 범위 설명
Well-Known Ports (잘 알려진 포트) 0 ~ 1023 전 세계적으로 표준화된 서비스들이 사용. OS가 권한 필요. 예: HTTP 80, HTTPS 443, SSH 22, DNS 53
Registered Ports (등록된 포트) 1024 ~ 49151 특정 기업/단체/서비스가 IANA에 등록해 사용. 예: MySQL 3306, PostgreSQL 5432, Redis 6379
Dynamic / Private / Ephemeral Ports (동적/사설 포트) 49152 ~ 65535 클라이언트가 임시로 사용하는 포트. 연결 시 OS가 자동 할당. 예: 웹 브라우저가 HTTP 요청 시 임시 포트 사용

그럼 잘 알려진 포트와 등록된 포트를 관리하는 주체가 어디일까? IANA 인터넷 할당 번호 관리 기관 이라는 국제단체가 있다.

이 포트번호 예시는 관례상의 권고이고, 얼마든지 바꿀 수 있다.

한편 49152 이상의 포트는 동적포트, 사설포트, 임시포트 라고 하는데, 자유롭게 사용할 수 있다.

보통 서버로서 동작하는 프로그램이 잘알려진 포트(0~1023)와 등록된 포트(1024~49151)로 동작하는 경우가 많다.

클라이언트로서 동작하는 프로그램은 동적포트로 동작한다(49152~65535) 웹 브라우저는 특정 웹사이트와 패킷을 주고받을때 임의의 포트로 주고받는다. 책에서는 55771이라는걸로 한다.

IP:PORT 로 특정 애플레키에션 프로세스를 식별한다.

포트기반 NAT(Network Address Translation)

NAT: IP주소를 변환하는 기술, 주로 네트워크 내부에서 사용되는 사설IP주소와 공인 IP주소를 변환하는 데 사용된다.

NAT 변환 테이블

이 과정에서 NAT테이블이 라우터에 있어서 내외 통신에서 테이블을 참조하여 나가고 들어오는데, 한가지 살펴봐야 할 점이 있다. 사설 IP주소와 공인 IP주소가 일대일 대응된다면, 네트워크 내부에서 사용되는 사설IP주소의 수 만큼 공인 IP주소가 필요하기 때문이다.

자세히 설명하자면, 예를들어 사설 IP주소가 1.2.3.(12345) 5개라면, 공인 IP로 나갈때 5.6.7.(89101112) 5개가 필요하다. 그런데 이러면 사설IP주소로 나눈 의미가 없다. 그래서 포트번호까지 사용해서 사설IP주소를 나눌때 쓰고, 공인IP주소를 5.6.7.8로만 쓴다던가 한다.

NAPT(Network Address Port Translation)

포트기반의 NAT를 NAPT라고 한다. NAT테이블에 IP주소:PORT번호로 놓아서 하나의 공인 IP주소를 여러 사설 주소가 공유하도록 한다.

이 방법으로 NAPT는 공인IP주소 부족문제를 해결한다.

포트포워딩

포트포워딩이란 “네트워크 내 특정 호스트에 IP주소와 포트 번호를 미리 할당하고 해당 IP주소:포트번호로서 해당 호스트에게 패킷을 전달하는 기능이다”

주로 네트워크 내부의 서버를 외부에서 접속할 수 있도록 접속 정보를 공개하기 위해 사용한다.

ICMP

3- 네트워크 계층의 IP의 unreliable, non connection을 보완하기위해 ICMP(Internet Control Message Protocol)이 있다. IP 패킷의 전송과정에 대한 피드백 메시지(ICMP메시지)를 얻기위해 사용한다.

ICMP메시지의 종류로는 크게

  1. 전송과정에서 발생한 문제상황에 대한 오류 보고
  2. 네트워크에 대한 진단정보가 있다.

오류보고를 위한 ICMP메시지 타입은 대표적으로

  • 수신지 도달 불가
  • 시간초과

가 있다.

traceroute, tracert가 ICMP메시지를 기반으로 동작하는 명령어다. 또 Ping도 그렇다.

ICMP는 IP의 신뢰를 보조하기 위한 도우미일 뿐이다.

전공과정에서 ICMP는 3계층이긴 하지만 IP 위에 있기때문에 3.1계층이라고 한다고 들었다.

4-2 : TCP와 UDP

TCP 통신 단계와 세그먼트 구조

제어비트

순서 번호와 확인 응답 번호

TCP연결 수립과 종료

연결 수립 : 3-way Hand Shake

연결 종료

TCP 상태

미연결상태

연결 상태

연결 종료 상태

UDP 데이터 그램 구조

4-3 : TCP의 오류, 흐름, 혼잡제어

오류 제어 : 재전송 기법

오류 검출과 재전송

1. 중복된 ACK 세그먼트를 수신했을 때

2. Time Out 발생했을 때

ARQ: 재전송 기법

Stop And Wait ARQ

Go-Back-N ARQ

Selective Repeat ARQ

흐름제어 : 슬라이딩 윈도우

혼잡 제어

Slow Start 알고리즘

혼잡 회피 알고리즘 Congestion Avoidance

빠른 회복 알고리즘 Fast Recovery

ECN : 명시적 혼잡 알림

results matching ""

    No results matching ""