* 해당 게시물은 Youtube Channel "따라하면서 배우는 IT", 네트워크 기초(개정판)의 강의를 보고 작성되었음을 미리 알려드립니다. (개인적으로 공부를 정리한 글입니다. )
* 개인적인 평가로, Network 강의 중 bible이라 생각할 정도로 강의 질이 좋습니다. Network에 대해 공부가 필요하시다면 꼭 한번 시청해보시는 걸 추천 드립니다.
> 따라하면서 배우는 IT Youtube Channel.
https://www.youtube.com/channel/UCl9zTDOvOxdCfUt1HqVwwdg
따라하면서 배우는 IT
어렵게 느껴질 수 있는 IT기술들을 하나하나 따라하면서 학습할 수 있는 곳입니다. www.ddarahakit.kro.kr 에 가시면 동영상 내용에 해당하는 설명도 함께 보실 수 있어요.
www.youtube.com
> 따라學 IT Blog
https://ddarahakit.tistory.com/
따라하면서 배우는 IT
어렵게 느껴질 수 있는 IT 기술들을 최대한 쉽게 따라하면서 학습할 수 있는 블로그
ddarahakit.tistory.com
*해당 블로그에서 추가 설명 및 강의에 쓰인 PPT 자료를 받으실 수 있습니다
주 프로토콜
(2계층) Ethernet
(3계층) ARP, IPv4, ICMP
(4계층) TCP, UDP
>> 2계층에서 하는 일 (MAC Address)
2계층은 하나의 네트워크 대역 즉, 같은 네트워크 상에서 존재하는 여러 장비들 중 "어떤 장비"가 "어떤 장비"에게 보내는 데이터를 전달한다. + Flow Control, Error Control를 수행한다.
2계층에서 다른 네트워크와 통신할 때는 3계층의 Protocol을 이용해야만 가능하다.
>> 2계층에서 사용하는 주소
LAN에서 통신할 때 사용하는 MAC 주소(물리적 주소).
16진수를 표현하기 위해 필요한 bit 수 = 4, byte = 8bit 이므로 위와 같이 RED MAC Address, BLUE MAC Address가 추가된다.
주소 뒤에 붙은 Ethernet Type은 Payload 안에 무엇이 있는지 미리 알려주는 역할을 한다. = 3계층 Protocol이 무엇이 있는지 알려준다.
이는 Ethernet 2 Header에만 있는 것이 아니라 다른 Protocol도 보통 사용한다.
Ethernet의 14Byte는
(6바이트) 목적지 주소
(6바이트) 전달지 주소
(2바이트) 프로토콜 타입 IPv4(0x0800), ARP(0x0806)
으로 구성되어 있다.
>> 3계층에서 하는 일 (IP Address)
3계층은 다른 네트워크 대역까지 어떻게 데이터를 전달할지 제어하는 일을 담당한다. = 발신에서 착신까지의 패킷의 경로를 제어.
>> 3계층의 Protocol
>> 일반적인 IP 주소
IP 주소를 처음 사용 당시 Classful 하게 IP를 나누어 사용했다.
필드를 총 4개로 구성되어 있고, .(dot) 으로 구분되어 있고, 사람이 알아보기 쉽게 하기 위해 10진수로 표현했다.
지금에서는 알 필요가 없는 이야기지만, 굳이 Class를 나누고 싶다면 2진수로 보면 쉽게 확인할 수 있다.
클래스풀한 IP주소
- A클래스 ( 첫번째 bit를 제외한 범위)
10진수로 표시 : 0.0.0.0 ~ 127.255.255.255
2진수로 표시 : 0 0000000.00000000.00000000.00000000 ~ 0 1111111.11111111.11111111.11111111
첫번째 필드는 네트워크를 구분하는 주소, 나머지는 호스트를 구분 - B 클래스 10진수로 표시 : 128.0.0.0 ~ 191.255.255.255 ( 두번째 bit까지의 범위)
2진수로 표시 : 10 000000.00000000.00000000.00000000 ~ 10 111111.11111111.11111111.11111111
두번째 필드는 네트워크를 구분하는 주소, 나머지는 호스트를 구분 - C 클래스 10진수로 표시 : 192.0.0.0 ~ 223.255.255.255 ( 세번째 bit까지의 범위)
2진수로 표시 : 110 00000.00000000.00000000.00000000 ~ 110 11111.11111111.11111111.11111111
세번째 필드는 네트워크를 구분하는 주소, 나머지는 호스트를 구분 - D 클래스 10진수로 표시 : 224.0.0.0 ~ 239.255.255.255
2진수로 표시 : 1110 0000.00000000.00000000.00000000 ~ 1110 1111.11111111.11111111.11111111
멀티캐스트용으로 사용하는 주소 - E 클래스 10진수로 표시 : 240.0.0.0 ~ 255.255.255.255
2진수로 표시 : 11110 000.00000000.00000000.00000000 ~ 11111 111.11111111.11111111.11111111
연구목적으로 사용하지 않는 IP주소
이러한 방식은 낭비가 심한데 예를 들자면, A Class로 IP를 할당했을 때, 해당 네트워크 대역엔 30대만 연결했다면.
100.0.0.1 ~ 100.0.0.30 만 사용되고 나머지 주소는 사용할 수 없게 된다. 쓰고 싶으면 해당 대역을 가진 Switch에 직접적인 연결이 필요로 했다.
이러한 낭비를 해결하기 위해 Classful 한 주소를 Classless한 주소로 사용했다. > 첫번째 변화
서브넷 마스크를 이용해서 대역을 구분했다.
>> 서브넷 마스크
Classful한 네트워크 대역을 나눠주는데 사용한 값. 이 값을 이용해서 네트워크 대역과 호스트를 구분할 수 있다.
2진수로 표기했을 때 1로 시작, 1과 1사이에는 0이 올 수 없다는 규칙을 가지고 있다.
해당 네트워크 대역은 64(0~2^6-1 = 0번부터 63까지)개의 컴퓨터를 연결할 수 있다. > 즉 낭비를 줄일 수 있는 것.
다만 이 방법도 확장을 할 때마다 많은 양의 증가폭으로 인하여 낭비가 발생했다.
부족한 IP를 해결하기 위해 IPv6가 도입되었지만, 이전 장비들은 여전히 IPv4를 사용하고 있었기에 한번에 변화에 적응할 순 없었다.
그래서 IPv4에 또 한번의 변화가 적용되는데, 이는 바로 공인 IP와 사설 IP를 구분하는 것이다.
>> 일반적인 IP 주소 (현재 우리가 사용하고 있는 IP 체계)
공인 IP > 넓은 네트워크 통신망에서 사용하는 IP 주소.
사설 IP > 좁은 네트워크 통신망에서 사용하는 IP 주소.
*공인 IP 1개당 2^32개의 사설 IP를 가질 수 있음.
사설 IP에서 공인 IP로 변환하는 기술을 NAT(Network Address Translation)이라 한다.
>> NAT
Network Address Translation 은 IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재 기록 하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술을 말한다.
패킷에 변화가 생기기 때문에 IP나 TCP/UDP Checksum도 다시 계산되어 재기록돼야 한다.
NAT를 사용하는 이유는 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함이다.
(반드시 사설 IP와 공인 IP를 변환하는데 사용하는 기술은 아니다.)
공유기에서 나갈 때 NAT Table에 기록하여 들어오는 값을 확인한다. 반대로 보내지 않았음에도 해당 주소로 들어오는 데이터는 그저 공유기가 갖고 끝난다. 따로 전송은 이루어지지 않는다.
이를 열기 위한 기술은 Port Forwarding 이라한다. (4계층에 다룸)
따라서 같은 네트워크에서의 통신은 Swich(L2, 물리계층), 다른 네트워크에서 통신은 Router(L3, 전송계층)로 구현된다.
>> 특수한 IP 주소
0.0.0.0 > Wildcard
127.0.0.1 > Loopback = 자기 자신을 뜻하는 주소.
Gateway > 일반적으로 공유기의 IP 주소. - 외부세상으로 나가는 문.
>> ARP Protocol, Address Resolution Protocol
같은 네트워크 대역에서 통신을 하기 위해 필요한 MAC 주소를 IP주소를 이용해서 알아오는 Protocol.
같은 네트워크 대역에서의 데이터 통신이라 해도, 보내기 위해선 7계층의 캡슐화를 통해 데이터를 보내기에 IP, MAC 의 정보가 필요하다. 그러나 IP 주소는 알고 MAC주소를 모를 때, ARP를 통해 통신이 가능해진다.
Hardware Type > 0001 [4 byte] - 0001은 Ethernet Protocol을 의미하고, 압도적으로 Ethernet이 많이 사용됨으로 1번만 쓴다고 봐도 무방하다.
Protocol Type > 0800 [4 byte] - 0080 은 IPv4 Protoccol을 의미한다.
Hardware Address Length > 06 [2 byte] - 2계층 주소의 byte 수
Protocol Address Length > 04 [2 byte] - 3계층 주소의 byte 수
Opcode > 01(Request) or 02(Response) [1 byte] - ARP 요청 패킷인지, 응답 패킷인지 알려주는 필드
Source Hardware Address > 출발지 MAC 주소 [6 byte]
Source Protocol Address > 출발지 IP 주소 [4 byte]
Destination Hardware Address > 목적지 MAC 주소 [6 byte]
Destination Protocol Address > 목적지 IP 주소 [4 byte]
* Ethernet Protocol만 목적지, 출발지 순으로 표기하고 나머지 Protocol은 모두 출발지(자신)을 먼저 표기한다.
네트워크 대역에서 ARP을 요청할 때, ARP는 3계층이므로 2계층을 씌어서 보내야 한다.
2계층은 Ethernet인데, 여기에서는 MAC주소가 필요로 하다.
이럴 때 Broadcasting 을 하는데, MAC에서는 FF:FF:FF:FF:FF:FF로 사용한다. (IP는 192.168.31.192로 사용한다.)
< ARP Protocol을 사용해서 MAC 주소를 알아오는 과정 >
IP: 192.168.0.10 (좌측 컴퓨터) 에서 192.168.0.30 로 ARP 요청을 보냈다.
일반적으로 Packet의 최소 byte는 60byte이다. Ethernet 14byte + ARP 28byte = 42byte 밖에 안된다.
그러므로 전송할 때 Padding 을 붙여 60byte를 채운 뒤 전송한다.
*Packet의 최대 Byte = (일반적으로) 1514 byte
'Computing > Network' 카테고리의 다른 글
04_ 4계층 TCP, UDP (0) | 2021.11.12 |
---|---|
03_ 3계층(2) IPv4, ICMP (0) | 2021.11.12 |
01_ 네트워크 기초 (0) | 2021.11.11 |