강의 주소 : http://www.kocw.net/home/cview.do?mty=p&kemId=1169634
무려 5개월만에 다시 공부하는 네트워크 계층, 그래도 여태 적었던 내용들을 토대로 가볍게 복습하니 내용은 머리에 좀 남는 것 같다.
또 이것 저것 실습하면서 체득된 정보들이 있어서 그런거 같기도 하고
요 근래 10개의 게시글에서 존댓말을 이용해서 해봤는데 , 지금 다시 예전 글들을 읽어봤더니 존댓말로 쓴 것들이 더 잘 안읽히는 것 같더라
그래서 그냥 다시 반말로 하기로 했다.
의식의 흐름대로 공부 할 수 있게
packet
(헤더와 데이터들이 존재함)각 데이터는 상위 레이어의 정보들이 담긴다.
IP Header
data
: TCP , UDP Segment
ver
: 현재 IP version
은 4length
: Packet
의 길이 source IP Address , destination IP Address
: Sender
의 IP
주소 , Receiver
의 IP
주소 (32비트의 데이터)check sum
: 에러를 판별하기 위한 비트time to live
: packet
이 라우터들을 거칠 때 마다 time to live
를 하나씩 줄인다. 즉 건널 수 있는 라우터의 수 왜
time to live
가 필요한데 ?
packet routing
이 잘못 되어packet
이 정처없이 라우터들을 떠돌며 네트워크의 혼잡도를 높히는 것을 방지하기 위해서
upper layer
: 상위 레이어의 통신 종류 (TCP or UDP
) , 어차피 data
에 있는 것은 상위 레이어에서 내려온 정보이기 때문
identifier , flag , fragment
: 다음 시간에 ..
각 header
들은 모두 20 byte
씩 갖는다. Packet
엔 IP header , TCP / UDP header
가 존재하기 때문에 packet
의 용량은 data + 40byte
이다.
IP Address
IP Address
는 32 bit
의 주소 체계를 갖는다.
이 때 읽기 편하게 8 bit
씩 나누고 십진수로 해석해 부른다. (컴퓨터는 그냥 이진수로 판별)
IP
는 각 컴퓨터의 Network Interface
를 가리키는 주소이다. 만약 Interface card
가 여러개면 여러개의 IP
주소를 가질 수 있다.
라우터가 그 대표적인 예시
Groupgin Related Hosts
IP
주소는 지역적 특성에 맞게 그룹핑 되어 할당된다.
이유는 지역적인 응집도에 따라 Router
의 forward table
을 생성하여 효과적인 forwarding
을 하기 위해서
이 때 24 bit
는 IP Prefix or network ID
, 나머지 8 bit
는 호스트를 칭하는 주소이다.
이 때 어디까지가 Prefix
이고 어디까지가 Host Address
인지 인식하기 위한 Subnet Mask
가 존재한다.
본인의 서브넷 마스크는 본인 네트워크의 호스팅 환경을 가리킨다.
Scalability Improved
이렇게 지역적 특성에 따라 분류해두면 라우터의 forwarding table
이 매우 단순해진다.
그 뿐 아니라 새로운 호스트가 추가되었을 땐 , HOST IP
만 변경되어 생성하면 되기 때문에 새로운 IP
주소를 찾는 것이 쉽다.
Classful Addressing
결국 Prefix
가 작을 수록 많은 HOST
들에게 네트워크를 제공 할 수 있었다.
그래서 과거엔 클래스 별로 prefix
의 크기를 할당했다.
예를 들어 Class A
의 prefix
는 8 bit
이기 때문에 명의 HOST
를 할당 할 수 있었다.
너무 크죠 ? 그래서 낭비가 너무 심했습니닷
그리고 인터넷 선구자들이 홀라당 큰 자리들을 다 선점했습니다너무 불공평하고 비효율적이야 ~~!!
그래서 90년대 중반에 Class
기반으로 제거하고 자유롭게 prefix
의 길이를 다르게 하여 할당 할 수 있게 변경되었다.
Logest Prefix Match forwarding
이전 Routing Table
에서 forwarding table
을 보고 가장 길게 매칭 되는 곳으로 forwarding
시킨다고 하였다.
근데 알고리즘의 이름의
Cute algorithm
이네 귀엽다
CUTE
알고리즘이 뭔가 했더니Congestion Control Using Threshold Evaluation
를 의미하는 거였다.
TCP
의congestion controll
처럼Threshold
를 이용하여packet loss
가 일어나면 전송하는 패킷의 양을 감소시키는 알고리즘이다.
IP Addressing : CIDR
현재의 IP Address
는 CIDR
로 클래스 없이 Prefix
를 자유롭게 할당 가능한 주소 체계를 가지고 있다.
이 때 prefix 주소 / prefix 의 비트 수
를 의미한다.
Subnet
Subnet
이란 라우터를 거치지 않고 접근 가능한 호스트들의 집합을 의미한다.
생각해보면 prefix
를 칭하는 Subet
을 보면 prefix
는 같은 로컬 응집성을 갖는 호스트들이 공통적으로 갖는 주소이다.
그렇다면 각 Subnet
들을 잇는 Router
의 prefix
는 어떨까 ?
Router
는 여러개의 네트워크 소켓을 갖고 있기 때문에 각기 다른 prefix
를 가진 네트워크를 가진다.
위 예시를 보면
223.1.
까지는 맞는거 아닌가 .. 싶은데223.1
까지 같은건forwarding
하기 위해 갖는Router
만의 주소체계일 뿐 각기 다른Subnet
들과prefix
는 다르다.
다만 라우터끼리도 다른 라우터를 거치지 않더라도 같은 prefix
를 갖지 않기 때문에 Subnet
이라 할 수 없다.
Network Translate
IP v4
는 32bit
의 주소 체계를 갖는다고 하였다.
이 때 개 이상의 네트워크가 전 세계에 존재 할 수 있다. (약 40억개)
하지만 전세계의 네트워크의 개수는 개 이상 일 수 있다.
생각해보자 클라이언트와 서버 뿐 아니라 라우터들도 IP
주소를 갖기도 하고 한 클라이언트가 여러개의 디바이스를 가질 수 있기 때문이다.
그래서 IP v6
도 개발됐었다. 무려 주소 공간이 개나 갖는 주소 체계를 말이다. (전 세계의 모래알 개수보다 많다고 한다.)
그래도 여전히 IP v4
를 사용한다.
왜 ? 쌈@뽕한 재활용 기법이 존재하기 때문이다.
Network Address Translaton (NAT)
를 이용하여 각 호스트들은 , 가장 최근의 Router
이전까지만 서로 유니크하면 된다.
이에 같은 지역에 존재하는 Host
들 끼리만 서로 다른 아이피 주소를 갖도록 하고
Router
를 통해 다른 지역으로 이동 할 땐, 다른 IP
주소로 변경하여 네트워크를 통하도록 한다.
즉 , inbound , outbound
할 때 IP address
를 변환하여 사용한다는 것이다.
Router
까지는 변환된 IP
주소를 이용하고 Router
에서 Host
로 이동 할 때는 Host
를 가리키는 IP
주소와 포트번호를 이용해 식별한다.
하지만 생각해보자 , IP Address translation
을 한다는 것은 상위레이어에서 지정한 IP Address
를 변경하는 layer biolation
이 일어난 것이다.
또한 Server
측 입장에선 NAT
를 사용 할 수 없다. 왜 ?
Server
는 프로토콜 별 지정된 Port
번호를 이용해야 한다. Server
의 IP address
는 항상 일정해야 하기 때문이다. Server
는 클라이언트의 IP Address
를 통해 보안이나 문제가 있을 경ㅇ를 대비해야 하는데 NAT
는 추적을 어렵게 한다.Socket
과 클라이언트는 1:1 연결인데, NAT
를 이용해도 라우터와 서버는 1:1 연결이다. 그렇게 하기보단 그냥 클라이언트와 1:1 연결을 하는 것이 낫다.