4. Internet Protocol
1. 개요
IP 특징
RFC791
모든 TCP, UDP, ICMP, IGMP에서 사용
unreliable_상위층에서 신뢰성 보장
connectionless_ex. 전송순서 A, B -> 도착순서 B, A
Hourglass model
2. IP 헤더
Size: 20byte(Option 제외)
전송순서
00-7, 8-15, 16-23, 24-31 비트 순서
=> network byte order = big edian (<-> little endian)
빅 엔디안(Big Endian)
낮은 주소에 높은 바이트부터 저장(Most Significiant Bit, MSB)
평소 사용하는 방식
소켓 통신에 이용
리틀 엔디안(Little Endian)
낮은 주소에 데이터의 낮은 바이트부터 저장(Least Significant Bit, LSB)
인텔 CPU 계열
소켓 사용을 위해 데이터 배열 변경
IP 헤더 필드
프로토콜 버전(4bit) - IPv4
헤더 길이(4bit) = Option + Header Length
60바이트까지 제한
서비스 유형 필드(TOS: Type-of service)
8bit 선행필드(3bit)_현재 무시
TOS(4bit)
최소 지연, 최대 처리율, 최대 신뢰성, 최소 비용
하나만 선택 가능
4bit 모두 0 -> 표준 서비스 제공
비사용 비트(1bit = 0)
TOS 권고 필드 값
TOS Example
minimum delay(빠른 응답 요구)_Telent, rlogin
maximum throughput(최대 처리율 요구)_FTP
maximum reliability(최대 신뢰성 요구)_SNMP, routing protocol
minimize monetary cost(최소 비용 요구)_NNTP
16비트 전체 길이
IP 데이터그램의 총 바이트 길이(최대 65535byte)
데이터 부분의 실제 크기 = 전체길이 - 헤더 길이
16비트 식별자
: 한 호스트에 의해 보내지는 각 데이터그램을 식별하기 위해 사용
데이트그램을 보내는 순서에 따라 1씩 증가
3비트 플래그
D: Don't fragment, M: More fragment, unused
13비트 분할 오프셋
fragment의 시작 위치 표시 -> 11장
TTL(Time-to live: 8-bit)
데이터그램의 수명 제한(라우터 경우 -> 1 감소)
-> Why? 패킷이 라우팅 과정에서 루프에 빠지는 것 방지 위해
프로토콜(8-bit)
: 어느 프로토콜이 IP로 데이터를 보냈는 가를 구분하기 위한 것
-> Why? Demultiplexing 하기 위해
header checksum(16bit)
IP 헤더만 checksum
Source IP address and destination IP address (각각 32bit)
PAD (Option 부분)
IP 헤더가 32비트의 배수가 되도록 하기 위해 사용
Option
: 데이터그램에 대한 가변길이 정보
보안과 제한 사항(군사 응용에 관한 것_RFC 1108)
레코드 route(각 router가 자신의 IP address 기록)
time stamp(각 router가 자신의 IP address와 time 기록)
loose source routing(데이터그램이 거쳐야 하는 IP address 기록)
strict source routing(데이터그램은 기록된 IP address를 따라 목적지까지 가야함)
3. IP Routing
Routing 개념
IF
호스트와 목적지 직접 연결 or 공유된 네트워크(ex. Ethernet, token ring)일 경우
then
목적지로 직접 전송
else
데이터그램을 디폴트 라우터로 보낸 후, 라우터가 목적지로 직접 전송
IP layer가 상위 계층(TCP, UDP, ICMP, IGMP) 혹은 Network Interface로부터 datagram을 받았을 때
memory 내의 routing table 검사 후 전송
IF
수신 datagram의 IP address = 자신의 IP address 혹은 broadcast address
then
protocol 모듈에게 전달
else
① IP layer가 router로 동작할 수 있도록 구성 -> 데이터그램 전송
② 그렇지 않다면 discard
Routing table이 갖고 있는 정보
Destination IP address: host or network address
next-hop router 혹은 직접 접속된 네트워크의 IP address
flags
destination IP address가 network인지 host인지 식별
next-hop router address가 실제 router인지 직접 접속된 iterface인지 식별 -> 9장
전송을 위해 datagram을 넘겨 줄 network inerface specification
Routing table의 예
IP routing
routing table search
IF
destination IP address = IP address
then
next-hop router나 직접 접속된 interface로 packet을 send
routing table search
IF
destination network ID = network ID
then
next-hop router나 직접 접속된 interface로 packet을 send
Routing table에서 "default"를 찾는다. 만일 찾았다면 지시된 next-hop router로 packet을 send
위의 과정에서 일치하는 것이 X
-> datagram 폐기, "host unreachable" or network unreachable" message가 해당 application에게 return
Examples
bsdi(140.252.13.35)에서 sun(140.252.13.33)으로 IP datagram을 보내는 경우
routing table search -> 같은 subnet임 확인
ARP 수행 후 전달
bsdi(140.252.13.35)가 ftp.uu.net(192.48.96.9)로 IP datagram을 보내는 경우
bsdi
routing table search
Host or network entry와 match되지 않음 => default 사용
ARP후 sun에게 전달
sun
destination address가 자신이 아니고 router의 기능을 갖고 있으므로 datagram을 forward
routing table search
Host or network entry와 match되지 않음 => default 사용하여 netb에게 전달
netb
sun과 동일한 절차를 따름
단, default를 사용하여 gateway에게 전달 하고자 할 때 ARP를 사용하여 Enet. Address를 구함
Gateway
이전의 두 router와 동일한 절차를 따름
default를 사용하여 next-hop router인 140.252.104.2에게 datagram을 forward
Key points
모든 host와 router는 default를 사용
destination IP address는 변경되지 않으며, 모든 routing의 기준이 됨
각 link별로 다른 link header와 link address가 사용
4. Subnet Addressing
RFC 950
host ID부분 -> subnet ID/ host ID
Subnet 장점: routing table 크기 줄일 수 있다
Example
140.252 network의 외부 Internet router에게는 subnet이 transparent하게 보인다.
이는 140.252로 시작하는 어떤 호스트에 도달하기 위해서는 무조건 140.252.104.1로 routing하기 때문
5. Subnet Mask
: subnetID와 hostID에 몇 bit가 할당되는 지 결정하기 위해 사용(32-bit)
일반적으로 IP address는 dotted-decimal notiation으로 표기, subnet mask는 hexadeciaml로 표현
IP address와 subnet mask를 이용하면
①같은 subnet인지, ②같은 network의 다른 subnet인지, ③ 다른 network인지 알 수 있다
Example. host address = 140.252.1.1/ subnet mask = 255.255.255.0
destination IP address
140.252.4. 5 -> 같은 network의 다른 subnet
140.252.1.22 -> 같은 subnet
192.43.235.6 -> 다른 network
6. 특수한 경우의 IP 주소
0 -> all 0; -1 -> all 1; 공백 -> not 서브넷팅
NOTE
Directed broadcasts were found to be such a big problem from a security point of view that they are effectively disabled on the Internet today. [RFC0919] describes the various types of broadcasts for IPv4, and [RFC1812] suggests that support for forwarding directed broadcasts by routers should not only be available but enabled by default. This policy was reversed by [RFC2644] so that by default routers must now disable the forwarding of directed broadcasts and are even free to omit support for the capability altogether.
7. 서브넷 예제
8. ifconfig 명령어
물리적 네트워크 인터페이스 및 할당된 인터페이스 주소에 대한 정보 제공
인터페이스 정상적 동작?
패킷 수신 준비?
네트워크 인터페이스 소프트웨어가 정상적으로 설치?
Option
-a: 모든 인터페이스를 알려줌(Only sunOS 존재)
참고: ipconfig /all (Windows)
9. netstat 명령
시스템 인터페이스에 대한 정보 제공
MTU, 입력 패킷 개수, 입력 에러 개수, 출력 패킷 개수, 출력 에러 개수, 충돌 개수, 현재 출력 큐의 크기
Option
-i: 인터페이스 정보 출력
-n: 호스트 이름 대신 IP 주소 출력
10. IP의 미래
IP의 세 가지 문제점
현재 IP할동 속도 매우 빠름
32비트 주소공간이 장기적으로 부적당
현재의 라우팅 구조에서 라우팅 테이블의 크기 증가 문제_CIDR에서 대안 제시(10.8)
IPng: SIP, PIP, TUBA, TP/IX
IPv4: 32bit address
TCP, UDP, ICMP, IGMP를 위한 패킷 전송 서비스 제공
멀티캐스팅 옵션으로 제공
IPv6: 128bit address
IPv4를 대신하기 위해 1990년 중반 설계
TCP, UDP, ICMPv6를 위한 패킷 전송 서비스 제공
멀티캐스팅 필수(No 브로드 캐스팅 가능)
ICMPv6 = ICMP + IGMP + ARP
11. 요약
헤더
라우팅
서브넷
서브넷 마스크
ifconfig와 netstat
차세데 IP
'Computer Science > 네트워크' 카테고리의 다른 글
[TCP/IP Networks] 7. TCP: Transmission Control Protocol (0) | 2022.10.01 |
---|---|
[TCP/IP Networks] 6. UDP: User Datagram Protocol (0) | 2022.10.01 |
[TCP/IP Networks] 5. Address Resolution Protocol, ARP (1) | 2022.10.01 |
[TCP/IP Networks] 3. Link Layer (0) | 2022.09.22 |
[TCP/IP Networks] 2. Introduction (0) | 2022.09.18 |