Position of IP and other network-layer protocols in TCP/IP protocol suite
Three auxiliary protocols: ICMP, IGMP, ARP
IP를 지원하기 위한 보조적인 프로토콜 - IGMP(one-to-many), ICMP(error control), ARP
Datagram Format(매우 중요)
인터넷은 packet switching 방식에 근간을 두고 있음.
virtual circuit과 datagram 중 datagram을 사용하고 그렇기 때문에 packet 하나가 datagram 단위이다.
header는 최소 20바이트에서 최대 60바이트까지 될 수 있다.
뒤의 option field가 0~40바이트가 될 수 있는데 header lenth를 보면 알 수 있듯이 하나의 bit가 4byte를 나타내고 있기 때문에 4byte 단위로 끊어져야 하기 때문에 option이 4byte가 아니라면 padding(0으로 이어주는)을 하여 4byte 단위를 맞추어 준다.
service type: 특급 우편? 일반 우편?
Version Number: 4 (for IPv4) - 0100
Header length: 4 bits (1 bit -> 4 byte word) - 최대 60 byte를 나타낼 수 있어야 하기 때문에 1bit가 4byte를 나타내는 것
2060 -> **515**(0101~1111)
Service type: TOS(Type of Service), Differentiated Services (DiffServ, 차등서비스) - 특급우편인지 일반우편인지
payload의 형식? 성격? 타입?을 나타내 줄 수 있는
우선순위를 정한다.
오디오나 영상과 같은 것은 빨리 전송이 되어야 하기 때문(늦게 오면 화질이나 음질이 깨지기 때문)
Total length: Up to 65,535 bytes(216)
IP packet의 size
Length of data = total length – (HLEN bit) x 4
Identification, Flags, and Fragmentation offset - packet을 자르고 붙이는데 필요한 field
Identification: fragment로 나누어야 하는 경우 나눠진 packet들은 다시 붙이기 위해 똑같은 Identification을 갖는다.
Flag: 빈칸,
D(o not fragment)
M(ore fragment) - 뒤에 더 추가적인 fragment가 있으면 1
fragment offset
보내고 싶은 payload(파란색 부분)가 0부터 시작해서 data가 쭉 있을텐데 flags가 3bit(8byte) 를 차지하고 있기 때문에 offset을 알기 위해서는 8을 곱해주어야 한다.
예를 들어 fragmentation offset = 100 이라면 800byte가 떨어져 있는 곳에 payload가 위치해 있다는 것을 의미한다.(일종의 payload pagenumber)
: fragment - 조각
Time-to-live(lifecycle, 중간에 가다가 특정 시간 도착 안 하면 중지), Protocol(TCP인지, UDP인지, ICMP인지...)
Q) quiz 3번 문제에서 framentation offset이 100이라면 payload의 시작으로부터 800 byte 떨어져 있는 곳에 있는 것 아닌가? 왜 datagram의 시작부터 세지?
Q) What is MTU
A) 네트워킹에서 MTU(Maximum Transmission Unit)이란 네트워크에 연결된 장치가 받아들일 수 있는 최대 데이터 패킷 크기를 말합니다. 지하도로나 터널의 높이 제한처럼
Header Checksum
header 부분의 것들을 모두 add하고 이를 wrapped sum, 1의보수를 취하고 위의 red field 부분에 넣는다.
그러면 수신 측에서는 저 부분을 그대로 받아서 header의 wrapped sum과 checksum을 더했을 때 만약 정상적으로 왔다면 보수를 취했을 때 0으로 딱 떨어지게 된다.
약한 형태의 error control
not payload, only header
Fragmentation
packet을 보내기 위해 조각내는 과정
이더넷(1500바이트)이나 와이파이(2300바이트)의 경우 IP packet의 양이 제한되어 있기 때문에 이를 통해 전송되려면 이를 통해 전송이 가능한 정도의 크기로 fragment를 해야 한다.
아래 그림은 4000바이트 짜리 packet을 1400바이트의 이더넷으로 전송할 때, 위처럼 원점으로부터 얼마나 떨어져 있는지를 offset으로 표현하게 된다.
Fragmentation Example
1400으로 세 조각을 내서 보내는 경우
2번째 packet이 간 path는 MTU가 1400보다 더 작다면 이를 더 잘게 쪼개서 보내야 한다.
수신 측에서는 같은 identification을 갖고 있는지, 0으로부터 얼만큼 offset이 되어있는지를 확인하여 이를 수신할 때 assembly 하게 된다.
19.2 ICMPv4
Internet Control Message Protocol Version 4 (with IPv4)
ICMPv4 has been designed to compensate two IPv4 deficiencies(결핍)
No error-reporting or error-correcting mechanism
No host and management queries(질의 응답)
Error-reporting messages
03: Destination unreachable
편지를 배달하는데 5동이 없어 -> ?! -> 수취인불명 -> 반송(그런 목적지 없어!)
04: Source quench(목 조이기)
편지가 너무 폭주하면 편지를 버리게 되고 현재 우체국 traffic이 heavy하니 보내는 양을 줄이라고 알린다.
11: Time exceeded
특정 시간(time to leave - 위에서 배운)이 지나 편지를 버렸으니 알고 있어라
12: Parameter problem
format이 이상해서 버린 것
편지로 따지면 규격 봉투에 보내지 않고 이상한 비닐봉지에 보낸 것
Query messages
08 and 00: Echo request and reply
살아있는지 물어보고 답을 받는. (host's liveness)
13 and 14: Timestamp request and reply
살아있는 단말 간 시간을 확인하는
Router solicitation and advertisement
이처럼 IP의 약점을 보완!
Error Messages for ICMPv4
Important points about ICMP error messages:
No ICMP error message will be generated in response to a datagram carrying an ICMP error message
반송 편지가 모종의 이유로 잘 도착하지 않았더라도 이에 대해서 또 반송편지를 보내거나 그러진 않는다.
No ICMP error message will be generated for a fragmented datagram that is not the first fragment
fragmeted 된 것은 첫번째 fragment에 대해서만 error reporting!
No ICMP error message will be generated for a datagram having a multicast address
only unicast address!
No ICMP error message will be generated for a datagram having a special address such as 127.0.0.0 (loopback) or 0.0.0.0. (this-host)
편지를 버리고 이를 알릴 때(error reporting) 편지 전체를 포함하는 것이 아니라 IP header와 8 byte를 포함하여 ICMP header(버린 이유)를 보내게 된다.
그런데 이는 source에게 보내야 하기 때문에 IP header가 추가된다.
보내는 사람, 받는 사람
Debugging Tools
Two tools that use ICMP for debugging or tracing the route of a packet: ping and traceroute
Ping: ICMP echo-request message and echo-reply message
해당 host 컴퓨터가 살아있는 지 확인
Debugging Tools: Traceroute
Traceroute program in UNIX or tracert in Windows can be used to trace the route of a packet from the source to the destination
TTL값이 초반엔 작은 값으로 시작하여 error report(Time exceeded)가 오도록 하여 TTL 값을 점점 늘려나간다.
그러다가 나중에 목적지에 제대로 도착했다면 tracert에서는 port number를 조작하여 없는 unknown UDP port를 보냄으로써 destination unreachable을 보낸다.
최종적으로 위 과정을 거치면서 source로부터 destination까지 어느 router들을 거치는지 파악하는 것이 가능한 것이다.
19.3 Mobile IP
고정된 IP를 쓰는 경우 이동했을 때 그 connection을 어떻게 유지하는가에 대한 solution
The main problem that must be solved in providing mobile communication using the IP protocol is addressing
IP addresses are designed to work with stationary(고정된) hosts because part of the address defines the network to which the host is attached
Mobile IP has two addresses for a mobile host: one home address(광운대) and one care-of address(고려대).
The home address is permanent;
the care-of address changes as the mobile host moves from one network to another
Home network and foreign network
Agents
나를 대신해서 일을 대신해 주는 software적인 기능
To make the change of address transparent to the rest of the Internet requires a home agent and a foreign agent
When the mobile host and the foreign agent are the same, the care-of address is called a collocated(나란히 놓여진) care-of address
Foreign agent가 Mobile host 안에 내재되어 있을 수도 있다.
Remote and Mobile Host Communications
Three phases: Agent discovery, registration, and data transfer
1, 2: (Home) Agent discovery
domain 안에서 agent를 찾기 위해 packet을 뿌리고 응답을 받아 agent를 찾는 과정
3, 4: (Foreign) Agent discovery
5, 6 : registration
나 광운대에 있다가 고려대에 왔어 라고 알리는
9: data transfer
그렇게 되면 고려대에 있어도 광운대 IP를 가진 애는 다른 remote host와 data를 주고 받을 수 있게 된다.
고려대 우체국아 광운대 우체국에 오는 거 있음 좀 알려줄래?
Agent Discovery
Mobile IP does not use a new packet type for agent advertisement; it uses the router advertisement packet of ICMP, and appends an agent advertisement message.
Mobile IP does not use a new packet type for agent solicitation(간절히 청함); it uses the router solicitation packet of ICMP.
router advertisement, router solicitation과 같은 ICMP query message를 통해서 agent discovery를 한다.
Registration (Request and Reply)
(1) The MH(Mobile Host) must register itself with the FA(Foreign Agent),
(2) The MH must register itself with its HA (normally by the FA),
(3) The MH must renew registration if it has expired,
(4) The MH must cancel its registration when it returns home
A registration request or reply is sent by UDP using the well-known port 434.
Data Transfer
After agent discovery and registration, a mobile host can communicate with a remote host
The movement of the MH is transparent to the rest of the Internet
Inefficiency in Mobile IP
The inefficiency can be severe or moderate.
The severe case is called double crossing or 2X.
The moderate case is triangle routing or dog-leg routing.
Using the update binding packet
이러한 비효율이 존재할 때 remote host에게 자기가 foreign network에게 받은 care-of-address를 remote에게 알려줘서 remote host가 home address가 아닌 내가 새로운 mobile 환경에서 받은 care-of-address로 직접 보내도록 binding 시켜주는 것!