Layer3의 Internet Protocol. 다 이걸 씀. IPv4 메시지 필드를 봤음.
Pop Quiz
end host에서 출발한 IP Packet의 Payload에는 반드시 4계층에서 보낸 정보만 들어있다.
⇒ F. end host에서 만드는 Ping이라는 프로토콜은 3계층에서 만든 ICMP 메시지를 실어서 간다. routing protocol 메시지가 있을 순 없지만, end host의 IP Packet Payload에서는 TCP segment 혹은 UDP Datagram 혹은 3계층에서 다루는 ICMP 메시지가 들어갈 수 있다.
host에선 routing protocol 메시지를 handling 하는 software가 running 하고 있다.
⇒ F. Control Plan에 있는 sw로, host엔 없으며 NW 라우터에만 있다. Control Plan에 있는 ICMP 프로토콜 만이 host에서 running 가능하다.
어떤 프로토콜의 헤더를 보면, 그 프로토콜이 무슨 일을 하는지 알 수 있다. IPv4 헤더 field는 고정되어 있다.
⇒ F. option 때문에 headerlength
라는 필드가 있다. IPv4 헤더는 고정되어 있지 않음. 단, option은 user message에서 사용하지 않고, control message를 주고 받는 라우터에서 사용하기 때문에 주로, user에서 출발하는 IP Packet의 헤더는 20byte다. 반면 IPv6는 헤더 필드가 고정되어 있음.
Output queue에서 차별적으로 queue를 두어 선별적으로 priority scheduling을 해줄 것이냐에 관련한 이슈
⇒ Network neutrality에 관한 이슈
IPv4 addressing은 32 bit. 처음엔 Class 단위로 addressing을 했다가, Classless한 addressing으로 CIDR 방식을 사용. address format:a.b.c.d/x (x는 subnet mask = network prefix, 앞에서부터(왼쪽부터) 몇 bit를 subnet으로 사용하냐, 앞에서부터 x bit는 라우팅하는데 사용하겠다.) → 앞에서부터 x bit만 보고, 어떤 subnet인지 판단해서 FIB table에서 mapping 되는 것을 보고 output port로 넘겨주겠다.
network prefix가 x bit다. = network에서 라우팅할 때 앞에서부터 x bit를 보고 한다.
subnet part가 같다 = 같은 subnet에 있다 = 라우터를 사용하지 않고 메시지 전달이 가능하다.
라우터에 링크가 네 개 붙어있다고 하면 라우터는 4개의 subnet을 handling 하고 있는 것이다.
= 라우터는 서로 다른 IP를 가진 4개의 port를 가지고 있다.
한 홉을 지나간다 = 한 라우터에서 다른 라우터로 넘어간다 = 다른 subnet으로 간다.
Quiz
⇒ 같은 네트워크에 있는지 없는지를 판별하려면 subnet mask를 알아야 한다. 이걸 알려주고 다음의 IP들이 같은 네트워크 상에 있는지 물어봐야 함.
subnet mask가 24이므로 앞에서 24bit가 같으니 훑어볼 필요 없이 같은 network에 있다는 것을 알 수 있음.
→ 같은 subnet에 있으므로 얘네끼리 통신할 때는 라우터가 필요 없다. hub(버퍼x)나 switch를 통해 통신.
subnet mask를 주어주지 않았으면 "알 수 없다."가 정답임.
subnet mask가 /24. 255.255.255.0(PC에서 setting하는 모양)이다는 같은 말.
어떤 network에 물려있는가? 128.119.40.0/24 네트워크에 물려있다.
/26이라면 255.255.255.192가 subnet mask. 11111111.11111111.11111111.11000000
이들은 어떤 subnet에 위치할까?
11011111.00000001.00010001.01000000
11011111.00000001.00010001.01010000
11011111.00000001.00010001.01101010
11011111.00000001.00010001.01110000
⇒ 11011111.00000001.00010001.01 = 128.119.40.64/26 subnet에 위치
/28이라면 같은 subnet에 있지 않다. 각 subnet에는 몇 개의 host를 할당할 수 있을까? 14개
2의 4승개 - 네트워크 아이디 - broadcast 주소로 쓰는 IP (가입자를 14명 받을 수 있다.)
DHCP로 Dynamic하게 하든, 손으로 setting을 하든 IP를 setting 할 때, 해야 하는 세 가지.
DHCP는 Server와 Client구조로 되어있는 UDP위에서 작동하는 Layer 5 protocol. 특이하게 server만 well-known port를 주지 않고 client도 well-known port를 줬음. 그 이유는?
IP주소가 아직 없어 서버는 응답시 broadcast하기 때문에, OS가 random하게 할당한 protocol을 사용하고 있다면 같은 port를 사용하는 다른 host가 응답을 받을 수 있음.
내가 속한 subnet의 상위 Provider ISP에서 받아오면 됨. 걔는 걔 위에서 받음.
만약 상위 ISP로부터 200.23.16.0/20 이라는 subnet을 할당 받았는데 이화여대 내에서 subnet을 8개로 구분하기 위해 3 bit를 더 써서 23bit를 subnet mask로 만들었음.
이화여대의 8개의 서로 다른 subnet을 알려주기 위해 상위 Provider ISP router에게 메시지를 보내 줘야 함.
200.23.16.0/20으로 route aggregation 후 보내줌. (어떤 8개의 subnet이든 앞에서부터 20bits는 같기 때문) → 상위 Provider ISP는 IP주소 앞의 20 byte만 보고 이화여대로 보내버린다. 이화여대는 뒤를 보고 8개 중 어떤 subnet인지 가리면 됨. 상위 Provider ISP까지 나머지 3bit를 더 볼 필요가 없다 = aggregation
Router advertises subnet = will deliver(forward) IP pkts whose dest. IP address belongs to the subnet.
= 어떤 ISP가 자신의 상위 ISP에게 route 정보를 알려줬다 ⇒ 상위 ISP는 이 route 정보에 해당하는 subnet에 속한 어떤 host에 해당하는 destination IP 주소를 달고있는 pkt을 주면 처리해준다.
만약 8개의 subnet 중 하나가 다른 subnet으로 이사갔는데 상위 ISP가 200.23.16.0/20 으로 들어온 메시지를 기존(이화여대)으로 보내버린다면?
⇒ 그럴 일 없음. FIB table로 match시 longest prefix match: 더 길게 match되는 subnet에 보내줌.
/23과 match되는 IP로의 메시지가 상위 ISP에 들어왔다면 더 길게 match되는 /23 subnet에 보내줄 것.
FIB table은 decentralized 되어 가입자 보드가 달려있는 port에 있음. Link interface = port #
/21 network.
0번 port에는 —.—.16.0부터 —.—.23.255까지의 host IP address가 할당 됨.
longest prefix matching이기 때문에, advertising할 때 route aggregation이 가능함.
각각 0번, 1번 port로 나간다.
Pop Quiz
IP주소는 상위 ISP에게서 받아옴, 최상위는 KRNIC(한국인터넷정보센터)에서 받을 수 있음.
private IP address는 인터넷에 나가지 못 하는 non-routable address. 이를 routable한 Public IP address로 convert해주는 것을 NAT라고 한다.
외부로는 private IP address로 나갈 수 없음. 10.0.0.-/24는 전세계에 엄청 많을 수 있음. 나만 쓰는 주소 X
어떻게 바꿀 것이냐? local network를 떠나 Internet으로 가는 애들은 이 주소를 달고 갈 수 없기 때문에 공식적인 IP주소를 딱 하나만 받아(138.76.29.7) 나갈 때 무조건 이 주소를 대표로 바뀌어서 나감.
다 똑같은 주소로 나가면 어떻게 구별? 내가 가진 라우터가 NAPT를 지원하여(middle ware의 부가기능) port로 구별을 시킴
port는 4계층에서 넣는 건데 3계층 주소 구별을 위해 port를 사용. 4계층에 넣는 port 번호로 주소를 구별
port 번호는 16bit → 약 65535개의 client들이 동시에 하나의 public address를 쓸 수 있다.
--- Relaying : there is no direct connection between a client, C and a server, S and all messages are forwarded via a relay between C and S.
--- Connection reversal : C and S are finally directly connected and exchange messages.