Transport Layer까지는 단말끝에서 발생하는 상황만 생각하면 되었다. 하지만 Network Layer부터는 이제 라우터로 인해 패킷이 전송되는 과정을 알 수 있다. 즉 모든 라우터는 Network Layer의 기능을 보유하고 있다.
<라우터>
라우터들은 ip를 확인하여 목적지까지 패킷들을 전송해야하기 때문에 Network Layer의 기능을 가지고 있다.
forwarding -> forwarding table를 보고 패킷을 다음 라우터로 전송하는 과정
routing -> routing algorithm을 이용해 forwarding table를 만드는 과정
<ip주소>
- 현재 ip주소는 ipv4를 사용하고 총 32bit이다.
- ip주소에는 network주소와 host주소로 표기되며 subnet mask를 이용하여 network주소의 범위를 표시한다.
(subnet -> 라우터를 거치지 않고 전송가능한 네트워크 범위)
- network interface card마다 ip를 갖고있음. (라우터는 여러개의 network interface , 즉 여러개의 ip를 갖고있음)
<NAT>
NAT(Network Address Translation) : 네트워크 주소를 변환해주는 기술
현재 ipv4가 나타낼 수 있는 주소의 수보다 이미 더 많은 단말기들이 존재한다. 그렇기에 ipv6(128bit)를 사용해야하지만
한번에 하드웨어들을 전부 바꾸는 건 매우 힘들어서 현재 임시적으로 NAT기술을 사용하고 있다.
현재 나의 단말기를 나타내는 ip는 subnet상에서 유일한 ip일뿐이다. gateway를 통해 외부 네트워크로 전송될 때 public한 ip로 변환해준다. (ex - 내가 LTE로 네이버 홈페이지에 접속하면 네이버는 나의 아이피를 LTE gateway ip로 인식)
문제점 :
1. 네트워크 주소를 변환해주는 오버헤드가 발생한다. (물론 이 오버헤드는 그렇게 크지는 않다.)
2. 나의 ip는 subnet에서 유일한 것이니 외부 네트워크에서 나의 ip로 접근할 수 없다.
(나의 ip에 접근할 수 있도록 gateway 라우터의 NAT table에 기록해 놓는 방법으로 해결가능)
3. host를 구별하는 방법이 port번호로 이루어지기 때문에 같은 port번호가 사용되는 경우 역시 문제가 생김
(ex - server 두 개를 subnet안에 만들면 web browsing할 때 모두 80번 포트를 이용하기 때문에 구별 불가능)
4. 라우터는 Network Layer기술로 ip를 확인하는 것을 넘어서서 source ip주소를 고치게 되고 심지어 Transport Layer
의 port번호까지 수정하는 지저분한 일이 발생.
<DHCP>
DHCP(Dynamic Host Configuration Protocol) -> 자동적으로 host에게 ip를 할당해주는 프로토콜(gateway ip주소, Local DNS server ip주소도 알려줌)
과정(시나리오):
1. DHCP discover : 나의 노트북을 켜면 브로드 캐스팅으로 존재를 알림.(67번 포트는 DHCP server만 열려있기에 반응)
2. DHCP offer : DHCP server는 할당할 ip를 브로드 캐스팅으로 보냄 (내가 보냈던 id도 그대로 같이 보냄)
3. DHCP request : 받은 ip를 사용하겠다고 브로드캐스트로 다시 알림(DHCP offer를 여러개 받았을 경우 다른
DHCP server에도 알려야 하기 때문에 브로드캐스트를 이용)
4. DHCP ack : 알았다고 함
<패킷 분해>
전송되는 도중 패킷사이즈가 커서(MTU 사이즈보다 커서) 한번에 통과할 수 없는 곳을 만나면 라우터는 패킷을 쪼개서 전송한다. (MTU : Maximum Transmission Unit)
분해된 패킷들은 목적지 host에서 조립된다.
fragflag -> 1이면 뒷부분 패킷이 있음 / 0이면 마지막 패킷임.
length -> 헤더포함 전체 패킷 크기(bytes)
offset -> 원본데이터에서의 바이트 시작 위치를 8로 나눈 값 -> 헤더정보 줄이기 위해
<ICMP>
ICMP(internet control message protocol)
라우터들끼리 정보를 주고받을 때 ip패킷안에 data대신 ICMP가 들어가있음.
<Routing algorithm>
-AS(autonomous system) -> 하나의 네트워크 (KT , ajou, skt....)
-IGP는 하나의 AS안에서의 프로토콜
-BGP는 AS들끼리의 프로토콜
[IGP]
-하나의 AS안에서 결정되서 사용됨
<Link-State Routing Algorithm> -> OSPF
라우터들끼리 브로드캐스트로 서로의 link-state정보를 주고받고 link-state를 전부 파악했으면 그 후에 dijkstra algorithm을 이용하여 최단경로를 구함.
<Distance vector algorithm> -> RIP
Bellman Ford 방정식 이용, 각 라우터의 distance vector를 서로 주고받으면서 distance vector가 변동이되면 인접한 라우터에 전달함.
- 포워딩 테이블이 다 만들어진 후, 한 곳의 link-state가 더 좋게 바뀐다면(작게) 전체 라우터들의 distance vector들이 빠르게 다시 완성된다.
하지만 한 곳의 link-state가 더 안좋게 바뀐다면(크게) 전체 라우터들의 distance vector들은 linear하게 증가하면서 느리게 완성된다.(해결 방법: 자신에게 의존하는 경로를 가진 노드들에게는 무한대로 값을 전달한다)
[BGP (border gateway protocol) ]
- AS들끼리의 경로 프로토콜
- AS단위끼리의 경로는 최단경로를 서로 알려주지 않고 해당 AS에게 돈이 되는 경로를 소개해준다.
(결국 해당 AS의 관리자의 뜻대로 결정 )
'CS(Computer Science) > 네트워크' 카테고리의 다른 글
4. Link Layer(링크 계층) (0) | 2020.08.31 |
---|---|
2. Transport Layer(전송 계층) (0) | 2020.08.26 |
1. Application Layer(어플리케이션 계층) (0) | 2020.08.25 |
(시작 전에) 네트워크 기본 (0) | 2020.08.23 |