본문 바로가기

Computer Network

[Lecture] Network layer : IP(Internet Protocol)

Nework layer

이제 어떻게 보낼 것인지에 대해 다룰 것이다. 인터넷 프로토콜인 IP에서 볼 것이다

라우터는 이 배송에 참여하기 때문에 전에 얘기했듯이 stack(networt layer, link layer, phy- layer)를 가지고 있다

 

transport segment를 송신측에서 수신측으로 보낸다

송신측은 segments를 datagrams로 캡슐화한다

수신측은 segments를 transport 계층에 전달한다

라우터는 그것을 통과하는 IP 데이터그램의 헤더 필드를 검사한다

 

각 패킷은 라우터의 네트워크 계층까지 올라갔다가 다시 전송된다 (형광펜 표시)

 

Two key network-layer function

 

  • forwarding : move packets from router's input to appropriate router output
  • Router identifies longest-matching prefix
  • analogy : process of getting through single interchange

 

포워딩 : 라우터의 입력 포트에서 출력 포트로 패킷을 이동시키는 것

라우터는 패킷 헤더를 보고 outgoing을 결정한다. 라우터 안에 포워딩 표가 있어서, 어디로 나가야할지 알려준다

포워딩 표는 주소범위로 관리되어 있으며, 라우팅 알고리즘으로 만든다

forwarding table : 특정 목표에 도달하기 위해선 어느 인터페이스로 가야하는지 알려주는 것

 

  • routing : determine route taken by packets from source to dest
  • analogy : process of planning trip from src to dst

 

IP datagram format

 

현재 IP protocol version : 4

length : 패킷의 전체 길이

 

time to live : 라우터를 지날때마다 -1을 한다. 이게 0이 된 순간 패킷이 버려지게 된다

Q. 왜 이 기능이 있을까? A. 트래픽을 줄이기 위해서이다. 라우터 포워딩 테이블이 잘못된 경우 도착하지 못하고 계속 루프를 돌 수 있다. 따라서 네트워크 안에서 일정시간 후에 나갈 수 있도록 time to live를 사용한다

 

32 bit src IP address : message를 생성한 host

32 bit dst IP address : message 목적지 host

 

헤더는 보통 20byte

message에 transport + network header가 추가돼서 메세지 + 40byte정도 오버헤드가 붙어서 전송된다

=IPv4 헤더는 20바이트이고, TCP 헤더는 추가로 20바이트이다. 따라서 트랜스포트 및 네트워크 헤더를 고려하면 메시지에 40바이트의 오버헤드가 발생한다

인터넷에서 많이 돌아다니는 패킷의 byte가 40인걸 알수 있다. 일반적으로 이건 TCP ACK이다

 

 

IP Address (IPv4)

 

 

: host를 지칭하는 주소

: host에 들어있는 네트워크 인터페이스를 지칭하는 주소

: A unique 32-bit number (흔히 8bit씩 끊어서 IP주소를 읽는다)

 

+ NIC : 네트워크 인터페이스 카드

동시에 IP주소를 여러개를 가질 수 있다 : 이런 특수 컴퓨터 : 라우터

 

IP주소를 배정하는 방법은?

가장 단순히 IP주소를 배정하는 방법 : 마음대로 배정하는 것

ㄴ 그러나, 이렇게 하면 라우터 안에 있는 포워딩 테이블(엔트리 개수가 많아진다)이 엄청 커지고, 검색이 힘들어진다

 

같은 prefix

그래서 Hierarchical Addressing : IP Prefixes

[계층화] Network(Prefix) and host 2부분으로 개념상 나눈다

ㄴ같은 네트워크에 있는 host들은 같은 네트워크에 있도로 개념적으로 정리한다

ㄴ 확장성이 있다

 

12.34.158.0/24면 network가 24bit이고 host가 8bit(즉, 2^8의 address들을 갖는다)

 

 

Network id = prefix = IP address = subnet

Subnet Mask : 어디까지 네트워크인지 표시하는 역할을 한다. 네트워크의 크기를 알 수 있다

(항상 address와 같이 다닌다)

 

Classful Addressing

Q. 과거에는 IP주소가 어떤식으로 네트워크에 붙어있는 기관들에 배분이 됐을까?

A. Class형식 !

Class A Class B Class C
0* (무조건 앞은 0으로 시작한다는 의미) 10* 110*
/8 /16 /24
2^24 address 2^16 address 2^8 address

 

A를 가질 수 있는 기관은 128기관이다 (0이 앞에 고정되어 있으므로)

기관은 적은데, host개수는 많기 때문에 선점 + 낭비 문제가 발생한다

 

C는 기관이 많지만 host를 할 수 있는 개수가 적다

 

유연하지 않기 때문에 class개념을 도입하지 않는다

 

 

Classless Inter-Domain Routing(CIDR)

(8,16,32뿐 아니라) 네트워크 크기에 맞춰서 조절이 가능하다

ㄴ 라우터들의 포워딩 테이블이 줄어든다

 

전에는 1024개의 host 주소가 필요했다면, /24가 4개 필요했는데 

classless에선 /22로 가능하다

Subnets

: 라우터들을 거치지 않고 접근이 가능한 host들의 집합 (같은 prefix를 갖는 집합)

: 라우터는 IP주소를 갖는다

: device interfaces with same subnet part of IP address

e.g. /24일때 라우터는 3개이다, subnet은? 3

 

Network Address Translation (NAT)

IPv4 IPv6 IPv4
32bit
이론상 host를 최대 2^32지원 가능
약 40억개

1995년 미국 인터넷이 상업화되면서 주소공간이 부족하다고 판단해
IPv6을 만들었다
128 bit
이론상 host를 최대 2^128지원 가능
2015년 다시 IPv4
NAT이라는 트릭을 사용해
주소를 재활용 또는 공유해
유지시킨다

 

Q. 지금은 왜 IPv4와 IPv6을 혼용해서 쓰는거야?

A. IPv6는 주로 새로운 네트워크 및 서비스에서 도입되고 있지만, 모든 시스템 및 네트워크 장비가 완전히 IPv6를 지원하도록 전환되는 것은 여전히 진행 중이다. IPv4와 IPv6 간의 혼용은 네트워크 전반에 걸쳐 계속되고 있다.

 

NAT 방법

내부에선 유일하되, 다른 네트워크에선 해당 주소를 사용할 수 있다

만약에 외부로 나갈 시, 라우터 IP주소로 바꿔주고, 포트번호도 바꿔준다

내부에서 같이 나올 수 있기 때문에 포트로 구별한다

나갈 때 WAN/LAN 주소를 NAT translation table에 기록하고, 들어올 때 table을 보고 다시 매칭한다

 

 

발생하는 문제

1. 라우터가 소스 IP, port number를 수정하기 위해 패킷 header(ip)와 data(port)를 접근한다

계층 biolation 문제가 발생한다

2. 포트넘버를 host찾는데 썼기 때문에 그 안에서 포트를 찾을 방법이 없다

따라서 NAT 내부 네트워크는 서버를 연결할 수 없다

 

Q. 서버를 이 안에서 굳이 사용하기 위해선 어떻게 해야하는가?

A.

'Computer Network' 카테고리의 다른 글

[Lecture] IP & routing algorithm  (0) 2024.03.02
[Lecture] DHCP  (0) 2024.02.26
[Lecture] TCP : Congestion control  (0) 2024.02.23
[Lecture] TCP : Flow Control  (0) 2024.02.23
[Lecture] Connection-oriented transport: TCP  (0) 2024.02.22