OSI 7 layer Model이랑 TCP/IP Model

Application, Presentation, Session 계층은 보통 통합해서 생각. HTTP, SMTP, FTP 등의 프로토콜이 사용하고 데이터 encoding/decoding 및 세션 관리함.
Transport 계층은 TCP 또는 UDP 프로토콜 헤더가 추가하고, 이 헤더에는 출발지 포트와 목적지 포트 번호 등의 정보가 포함된다.
Network 계층은 IP 프로토콜 헤더가 추가되고 이곳에서 출발지 IP 주소와 목적지 IP 주소를 포함한다. 라우팅(Routing) 기능을 수행하여 패킷이 최적의 경로를 따라 전송될 수 있도록 한다.
Data Link 계층은 MAC(Media Access Control) 주소(물리적인 네트워크 카드 주소)를 사용하여 Ethernet 헤더 및 꼬리부분(Footer)을 추가한다.
Physical 계층은 비트 단위의 원시 데이터(raw data bits)로 변환하여 네트워크 매체(예: 케이블(utp, stp, 광케이블), 무선 신호 등)를 통해 전송한다.
TCP/IP Model
Ethernet = Layer2에서 사용하는 프로토콜
Ethernet : 예전에 half duplex였어서 충돌이 일어나니깐 CSMA/CD를 썼었음. Carrier Sense Multiple Access/ Collision Detection인데 충돌을 방지해 준다. 근데 요즘은 full duplex방식이라 속도도 2배 빠르고 충돌 안 일어나서 CSMA/CD 동작방식 안 쓴다.
ARP Protocol : MAC주소 찾을 때.
IP 주소가 있는데 MAC 주소가 따로 필요한 이유는 무엇일까? IP 주소는 논리적 주소이며 MAC 주소는 물리적 주소이다. IP 주소가 마치 배송지 주소라면, MAC 주소는 주민번호라고 할 수 있다. 같은 IP 주소더라도 MAC 주소가 다르면 구별할 수 있게 되는 것이다
ARP(주소 결정 프로토콜)는 네트워크 상에서 IP 주소를 물리적 네트워크 주소(MAC 주소)로 대응시키기 위해 사용되는 프로토콜이다. 즉, ARP는 IP 주소와 MAC 주소를 일대일 매칭 시켜 LAN에서 목적지를 찾아갈 수 있도록 하는 프로토콜이다. IP주소와 MAC 주소를 일대일 대응하여 정리한 테이블을 ARP Table이라고 한다.
ARP query를 날린 다음에 IP주소가 일치하면 MAC 주소 다시 돌려받음. 그걸 통해서 통신하는 것.
링크텍스트
참조합시다.
IP
IP는 네트워크 환경에서 컴퓨터(노드)간 통신하기 위해 각 컴퓨터에 부여된 네트워크 상 주소이다.
IP는 우리가 편하게 보기 위해서 10진수 표기법으로 표기할 뿐이지 실은 32자리 2진수로 표현되어 있다.

하나의 십진수는 8자리의 2진수로 대체되고 이를 '옥테드' 라고 부른다.
IP주소는 4개의 옥테드로 구성되어있는 것이다.
IP주소 클래스(A,B,C)

Network Address랑 Host Address로 나뉨.

A클래스를 보면 하나의 네트워크가 가질 수 있는 호스트 수가 제일 많은 클래스이다. IP주소를 32자리 2진수로 표현했을때, 맨 앞자리 수가 항상 0 인 경우가 바로 A클래스이다.

이진수로는 0000 0000. 0000 0000. 0000 0000. 0000 0000 ~ 0111 1111. 1111 1111. 1111 1111. 1111 1111 범위이고, 십진수로는 0.0.0.0 ~ 127.255.255.255 범위이다.
예를 들어 A클래스로 13.0.0.0 네트워크 주소를 할당 받았다고 하면 13. 은 네트워크 부분이고 나머지 0.0.0 에 호스트 IP를 할당 할 수 있다. 십진수 0.0.0 은 2진수로 표현하면 총 24개의 2진수로 표현이 가능하고(8비트씩 3개 있으니깐) 이는 곧 2^24 개의 호스트 IP를 가질 수 있다는 뜻이다. 십진수로 나타내면 13.0.0.0 ~ 13.255.255.255 이다. 하지만 여기서 13.0.0.0은 네트워크 주소를 표현하기 위해서 호스트IP로 사용하면 안 되고, 13.255.255.255도 브로드캐스트 주소로 사용하기 때문에 호스트 IP로 사용하면 안 된다. 그래서 (2^24) - 2개를 사용할 수 있다.
CIDR(Classless Inter-Domain Routing)
클래스 기반 배치는 IP 주소를 할당하는 데 있어서 비효율적이었고 IP 주소 공간 낭비로 이어졌어서 CIDR이 나옴.
클래스 없는 주소 또는 Classless Inter-Domain Routing(CIDR) 주소는 가변 길이 서브넷 마스킹(VLSM)을 사용하여 IP 주소의 네트워크와 호스트 주소 비트 간의 비율을 변경
서브넷 마스크는 호스트 주소를 0으로 변환하여 IP 주소의 네트워크 주소 값을 반환하는 식별자 집합
라우터는 패킷을 목적지까지 전달하기 위한 경로를 결정할 때 서브넷 마스크 정보를 사용. 패킷의 목적지 IP 주소와 서브넷 마스크를 AND 연산하여 네트워크 주소를 얻고, 이것을 바탕으로 라우팅 테이블에서 경로를 찾음.

원래 IP주소에 서브넷 마스크가 저렇게 나와있으면
240이 이진수로 11110000이다.
그러면 172.26.112.1/20이라고 생각하면 된다.
이러면 각 서브넷 당 2^12-2개의 호스트를 만들 수 있다.
디폴트 서브넷 마스크
클래스A : 255.0.0.0
클래스B : 255.255.0.0
클래스C : 255.255.255.0
예제1) 192.168.0.0/24(major network)일 때, 이것을 서브넷 2개로 나누려면?
먼저 192.168.0.0/24에서 /24는 prefix로 network id와 host id가 어디까지인지를 알려준다.
우선은 192.168.0.0/24~192.168.0.255/24까지 (256-2)개의 ip주소를 할당 가능하고 192.168.0.0/24에서는 network id가 24bit, host id가 8bit이다.
서브넷 두 개로 나누면 위의 256개를 128개씩으로 나누어야 하는데 그러면
이렇게 두 개의 서브넷으로 나눠야 한다.
그럼 각 서브넷은 2^7까지, 다시 말해서 host id 뒤의 7bit만 바뀌면서 ip주소를 할당할 수 있게 되는 상황인 것이다.
그러면 network id가 25bit, host id가 7bit이 되는 것이다.
이것에 대한 서브넷 마스크 값은
1111 1111.1111 1111.1111 1111.1000 0000
위에처럼 되어야하고 이를 10진수로 변환하면 255.255.255.128이다.
예제2) 213.1.2.0/24를 subnet 4개로 나누면?
4개로 나누려면 현재 256개의 할당가능한 ip주소(2개 빼야하긴함)를 64개씩으로 나눠야하고 그러려면 뒤의 host id 8bit중에 6bit만 바꿔야하므로 host id의 2bit가 network id로 옮겨가게 된다. 즉 24/8 > 26/6으로 바뀐다는 것.
그렇게 서브넷 4개로 나누고 각 서브넷에서 주소를 할당 받을 것인데 예를 들어서 213.1.2.7/26을 할당 받았다면 Routing Table에는 그냥 network address인 213.1.2.0/26이 올라간다고 한다.
예제3) 172.31.0.0/24를 IP주소 30개씩 서브넷팅할 것이다. 몇 개의 서브넷으로 나뉘며, 각 서브넷 network address, broadcast address, 할당 가능한 ip 주소대역을 써라.
IP주소 30개씩 서브넷팅 할 것인데, 이것은 32개씩으로 나누고 그 중에서 network address, broadcast address 두 개를 제외하면 30개씩으로 딱 맞는다. 그래서 host id의 3bit를 network id로 넘길 것이고 그러면 subnet은 8개로 나뉜다.
원래 172.31.0.0/24~172.31.0.255/24까지 256개를 쓸 수 있는데(물론 맨 앞과 맨 뒤 2개는 빼야하지만) 이것을 8개로 나누면 32개씩 나누면 된다. 각 서브넷에서 처음과 끝이 각각 network address, broadcast address이다.
예제4) 172.16.0.0/16을 서브넷 4개로 나눠보자.
우선 서브넷 마스크 값은 255.255.192.0이 되어야한다.
현재 디폴트 서브넷 마스크는 255.255.0.0인데 여기서 서브넷을 네 개로 나누어야하므로
1111 1111.1111 1111.1100 0000.0000 0000
이렇게 서브넷 마스크값이 생겨야한다. 그러므로 위에 값을 10진수로 변환한 값이 255.255.192.0이 값이다.
그렇게 각각 나누면
172.16.0.0~172.16.63.255
그런데 여기서 network address는 172.16.0.0이고 broadcast address는 172.16.63.255이다. 그리고 할당 가능한 ip주소 범위는 172.16.0.1/18~172.16.63.254/18이다. (2^14-2)개겠죠? good
172.16.64.0/18~172.16.127.255/18
172.16.128.0/18~172.16.91.255/18
172.16.192.0/18~172.16.255.255/18
나머지 세 개도 처음의 예시처럼 생각하면 된다. 이렇게 네 개의 서브넷으로 나눌 수 있다.