💡 TCP/IP가 보이는 그림책을 정리한 내용입니다.

네트워크층은 인터넷층이라고도 부르며, 여러 개의 네트워크를 지나서 수신인의 컴퓨터에 데이터를 전달하는 역할을 맡고있다.
네트워크에서 중심 역할을 하는 프로토콜이 하나밖에 없다. 바로 IP(Internet Protocol)이다. IP 통신에서는 수신인의 기기를 지정하기 위해 IP주소라는 고유의 숫자를 사용한다. 현재 널리 사용되는 IP(IPv4)에서는 IP주소를 32비트로 나타낸다. 그 32비트를 8비트의 피리어드로 구분하고, 10진수로 바꿔서 192.168.15.10과 같이 표기한다. 편지를 쓸 때 봉투에 수신인의 주소를 쓰는 것처럼 네트워크층에서는 헤더에 IP 주소를 쓴다.
IP주소는 일반 주소로 말하면 동명까지에 해당하는 네트워크부와 번지에 해당하는 호스트부가 있다. 하지만 그냥 보면 어디까지가 네트워크부이고 어디까지가 호스트부인지 모른다. 그래서 이 둘의 경계를 나타내기 위해 서브넷 마스크라는 장치를 사용한다.
IP는 비커넥션형 프로토콜이다. 트랜스포트층으로 말하자면 UDP와 같은 것으로 일단 보내면 그걸로 끝이다. 상대에게 전달되었는지 아닌지 신경쓰지 않는다. 하지만 통신의 핵심을 담당하는 프로토콜이 이것밖에 하지 않는다면 자기 임무에 소홀하다고 할 수 있다. 그래서 네트워크층에는 신뢰성 있는 IP를 지원하기 위한 프로토콜로 ICMP(Internet Contorol Message Protocol)가 있다.
ICMP는 수신인에게 전달되지 않는 등의 문제가 발생할 때 송신인에게 그 사실을 알려주는 메시지를 보낸다. ICMP 메시지는 메시지만 단독으로 보내지는 것이 아니라 IP 헤더가 추가되어 보내진다. 즉, ICMP는 트랜스포트층에 대한 TCP와 UDP의 관계처럼 병렬적인게 아니라, 어디까지나 IP를 도와주는 프로토콜인 것이다. 중심 역할을 하는 프로토콜이 하나밖에 없다고 한 것은 바로 이 이유 때문이다.
덧붙여 트랜스포트층에서 세그먼트라고 불리던 것은 네트워크 층에서 데이터가 되며, 거기에 IP헤더를 붙인 것을 IP데이터그램이라고 한다. 이 IP 데이터그램도 그 다음 층인 데이터 링크층에 가면 데이터가 된다. 이와 같이 층마다 이름이 바뀌어간다. 좀 복잡해 보이지만 금방 익숙해질것이다.
IP 주소
인터넷 상의 컴퓨터들을 식별하기 위해 인터넷에 연결된 컴퓨터에 주어지는 숫자
일반적으로 32비트로 나타난다. 인터넷 접속시마다 바뀌는 유동 IP와 ISP로부터 부여받은 고정 IP가 있다.
숫자로 된 IP 주소를 www.cyber.co.kr과 같이 알기 쉽게 만든 것이 도메인명이다.
IPv4
IP version4를 말하는 것으로 현재 인터넷 공인 IP 주소 체계다. IP 주소를 32비트로 나타내며, 약 42억 개를 표현할 수 있다. IP 주소는 전세계 컴퓨터마다 고유해야 하므로 IPv4로 표현할 수 있는 IP 주소가 고갈될 것을 대비해 128비트를 사용하여 거의 무한대의 IP 주소를 가질 수 있는 IPv6의 사용을 검토하고 있다.
Q. 2004년도 책의 기준이므로 2022년 기준 IPv6는 이미 사용되고 있다.
서브넷 마스크
IP 주소에서 네트워크부와 호스트부의 경계를 나타내기 위해 사용되는 32비트 숫자다. 서브넷 마스크의 설정에 따라 네트워크를 보다 효율적으로 활용할 수 있다.
IP 헤더
데이터를 누가 누구에게 보내는지 또한 어떤 경로로 보내는지 등과 같은 정보를 모아둔 것으로, 송신측 IP 주소와 수신측 IP 주소 등이 들어간다.
ICMP
목적지로 가는 경로를 찾아주는 기능밖에 없는 IP 프로토콜을 도와서 목적지에 제대로 도착했는지 등과 같은 오류 메시지를 알려주는 역할을 하는 프로토콜이다. ICMP 메시지는 IP 패킷 안에 삽입되어 보내지는데, 이것을 캡슐화라고 한다.
네트워크층은 다른 층과 달리 주된 프로토콜이 IP 하나밖에 없다.

네트워크층에는 통신 방법의 차이를 흡수하는 기능이 있다. 이에 의해 통신 방법이 다른 네트워크 상에 있는 컴퓨터끼리도 주고받기가 가능하게 되는 것이다. 즉, 네트워크층은 통신 방법의 차이를 흡수하는 완충재라고 할 수 있다.
네트워크층은 누가 누구에게 전달할지라는 통신이 있어서 가장 중요한 정보를 다루고 있다. 통신 상대를 정하기 위해서 네트워크상에 존재하는 모든 기기에는 고유의 주소 같은 것이 할당되어 있다.
수신처 컴퓨터까지의 경로는 하나만 있다고 한정할 수 없다. 수신처까지의 경로가 여러개 있는 경우, 적절한 루트를 사용하여 전달하는 것도 네트워크층의 역할이다.
송신측에서는 트랜스포트층으로부터 데이터를 받아서 수신처를 특정하는 번호(IP주소)등을 기록한 IP 헤더를 붙여서 데이터 링크측에 전달한다. 데이터에 IP헤더를 붙인 것을 IP 데이터그램(datagram)이라고 한다. 데이터 링크층에서 다룰 수 있는 크기보다 클 때는 분할한 후 헤더를 붙인다.
IP 데이터 전송은 Best Effort 방식이다. Best Effort란 노력은 하지만 결과는 보장하지 않는다는 뜻이다. 헤더가 깨지지 않았는지 확인하거나 수신처의 주소가 존재하는지 아닌지 정도의 판단 처리는 가능하지만, 재전송 처리는 수행하지 않는다.
IP에는 수신처까지의 경로나 통신 상태를 보고 지금 가장 빨리 수신처에 전달하려면 어떤 경로가 좋은지 판단해서 보내는 기능이 있다.
수신측에서는 IP헤더에 쓰여진 수신처의 주소(IP 주소)를 확인하고 자기 앞으로 온 것만 받는다. 그리고 트랜스포트층의 지정된 프로토콜에게 전달한다. 혹시 분할되어 있다면 조립한 후에 전달한다.
IP주소는 네트워크상의 기기를 구별하기 위한 번호이다. 32자리 비트열로 되어있으면 기본적으로 다음과 같은 구조로 되어있다.

같은 네트워크 내라면 네트워크부는 똑같다.
8비트로는 0-255까지의 수를 나타낼 수 있다.

라우터는 접속되어 있는 네트워크의 수만큼 IP 주소를 갖고 있다.
완전히 똑같은 주소를 갖고 있는 컴퓨터가 여러 대 존재한다면 컴퓨터를 지정한다는 목적을 이룰 수 없다. 그래서 번호의 중복을 피하기 위해 ICANN 이라는 기관이 중심이 되어 전 세계의 IP 주소를 관리하고 있다.
IP 주소만으로는 네트워크부와 호스트부의 경계를 알 수 없다. 그래서 서브넷 마스크(또는 넷마스크)라는 값을 사용하여 경계를 나타낸다.

일반적으로 IP 주소와 서브넷 마스크는 다음과 같이 표기하고, 쌍으로 사용한다.

또 IP 주소와 서브넷 마스크를 다음과 같이 묶어서 쓸 수도 있다.
192.168.15.10/16
IP주소 / IP주소 다음에 슬래시와 네트워크부의 비트수를 쓴다.
경계는 8비트 구분과 일치하지 않는 경우도 있다.
라우터(router)는 네트워크간을 연결해서 패킷이 수신처에 전달될 때까지 길 안내를 하는 기기이다. 라우터의 네트워크층에서는 IP 헤더에 기록된 수신처의 IP 주소를 보고 그 다음 전송처를 결정한다.
라우터의 역할이 네트워크층의 역할이라고 해도 과언이 아니다.
라우터를 경우한 패킷의 전송은 아래와 같다.

통신 세계에서는 컴퓨터 사이의 거리를 통과한 라우터의 개수로 나타낸다. 이때 사용하는 단위를 홉(hop)이라고 한다.
수신측의 네트워크층에서 IP 헤더를 보고 데이터가 깨졌는지, 자기 앞으로 온 것인지를 확인한다. 그리고 조합한 데이터를 트랜스포트층의 지정된 프로토콜로 전달한다. 헤더의 정보를 보고 원래 형태로 다시 맞춘다.
IP헤더는 다음과 같은 순서와 크기로 기록하도록 정해져있다.
IP는 UDP와 똑같이 비커넥션형 통신을 수행한다. 그래서 데이터가 상대에게 전달됐는지 아닌지는 전혀 관여하지 않는다.
그래서 네트워크층에는 신뢰성 면에서 IP를 도와주는 프로토콜인 ICMP(Internet Control Message Protocol)이 있다. ICMP는 IP 데이트그램의 통신 상태 등을 필요에 맞게 송신처에게 알려준다. ICMP만 단독으로 통신하는 것은 아니다.
ICMP 메시지는 ICMP헤더와 ICMP 데이터에 IP헤더를 붙인 형태로 송신측에 보내진다.
ICMP 헤더의 기본적인 구성은 아래와 같다.
- 타입(8비트)
메시지의 종류를 나타내는 숫자이다.- 코드(8비트)
오류의 원인 등을 나타내는 숫자이다.- 체크섬(16비트)
데이터가 무사한지 아닌지를 확인하기 위한 값이다.
접속 상태를 조사하는 명령인 ping이나 수신처까지의 경로를 조사하는 명령인 tracert(UNIX에서는 traceroute)는 ICMP 메시지를 사용해서 결과를 반환한다.
주요 타입 목록
| 타입 | 메시지 종류 | 의미 |
|---|---|---|
| 3 | 도달 불능 | IP 데이터그램을 수신처에 전달할 수 없습니다. |
| 5 | 리다이렉트 | 현재 경로보다 최적의 경로를 발견했다. |
| 11 | 시간 초과 | 일정 개수 이상의 라우터를 경유한 IP 다이어그램을 파기했다. |
| 0.8 | 에코 | 8: 이 메시지가 전달되면 답장을 줘라 0: 메시지가 무사히 전달되었다. |
각 컴퓨터에 고정 IP 주소를 할당하는 경우, 개별적으로 설정해야한다.
필요할 때만 자동으로 IP 주소를 할당하는 프로토콜 DHCP(Dynamic Host Configuration Protocol)를 사용하는 방법도 있다. 그러면 네트워크에 접속함과 동시에 필요한 설정이 자동으로 수행된다.
DHCP 클라이언트
DHCP 서버에서 IP 주소를 요청하고, 일시적으로 할당받는다.DHCP 서버
클라이언트의 요청에 대한 응답으로 IP 주소를 빌려주거나 서브넷 마스크의 설정 정보를 제공한다.
DHCP 클라이언트는 요청을 할 때 수신 IP 주소를 255.255.255.255로 만든다. 이 것은 브로드캐스트 주소라고 하며, 동일한 LAN 안의 모든 기기에 송신하기 위한 특수한 IP 주소이다. 이 요청에 대해서는 DHCP 서버만 응답한다.
DHCP 클라이언트가 요청을 할 시점에서 클라이언트 IP 주소는 0.0.0.0 이다.
IP 주소를 부여받은 DHCP 클라이언트는 다시 255.255.255.255 라는 IP 주소 앞으로 확인 메시지를 보낸다. 이에 대해 DHCP 서버가 응답하면 주고받기가 완료되는 것이다.
127.15.4.0~127.15.4.255/24 라는 IP 주소를 사용하는 네트워크가 있다면 127.15.4라는
네트워크 주소를 갖고 있는 하나의 네트워크에 254 대의 기기를 접속할 수 있다. (0과 255는 고유 주소로 사용할 수 없으므로 256-2=254개가 됩니다.)
하지만 실제로 이런 대규모의 네트워크가 필요한 경우는 많지 않다. 그래서 서브넷(subnet)이라는 장치를 사용해 가상으로 작은 네트워크들을 만들어 네트워크 모음으로 처리할 수 있게 하고있다.
서브넷을 만드려면 서브넷 마스크(subnet mask)를 사용한다. 서브넷 마스크를 사용하여 가상으로 네트워크부를 늘임으로써 다음과 같은 일이 가능합니다.
127.15.4.0~127.15.4.255/24⇒ 254개의 기기를 접속할 수 있는 하나의 네트워크이다.
127.15.4.0~127.15.4.255/28⇒ 늘이고 싶은 비트수를 더한다. 네트워크부가 4비트 증가한다. 이 부분은 관리자가 자유롭게 설정할 수 있다. 14개의 기기를 접속할 수 있는 네트워크를 14개 만들 수 있다.
서브넷은 네트워크 내에서만 정한 규칙으로, 밖에서 보면 하나의 큰 네트워크로 보인다.
회사 등 네트워크의 규모가 큰 경우, 서브넷을 사용하여 부서나 층 단위로 세분화하면 관리가 쉬워진다.
회사 내나 가정 내 등 한정된 네트워크 안에서만 유효한 IP 주소를 사설 주소(Private address)라고 한다. IP 주고(공인 주소)는 중복할 수 없는 데 비해, 사설 주소는 네트워크가 다르면 중복되어도 문제가 없다. 사설 주소를 사용하면 IP 주소를 절약할 수 있다.
사설 주소는 다음과 같은 범위 내에서 선택하도록 정해져있다.
10.0.0.0~10.255.255.255/8
172.16.0.0~172.31.255.255/12
192.168.0.0~192.168.255.255/16
사설 주소 그대로는 인터넷에 접속할 수 없으므로 장치를 사용한다. 대부분의 라우터에는 이런 기능이 들어있다.
NAT(Network Address Translation)
사설 주소와 공인 주소를 일대일로 대응시켜 변환하는 장치이다. 확보하고 있는 공인 주소의 개수 이내라면 여러 개의 컴퓨터를 동시에 인터넷에 접속시킬 수 있다.NAPT(Network Address Port Translation)
하나의 공인 주소를 사용하여 여러 대의 컴퓨터를 동시에 접속할 수 있는 장치이다. 포트 번호에 의해 각각의 컴퓨터를 식별하므로 같은 공인 주소를 동시에 사용할 수 있다.
💡 숫자로 된 IP 주소는 다루기 어려우므로 문자를 대용할 수 있는 장치가 개발되었다.
IP 주소와 도메인명을 처리하는 서비스를 DNS(Domain Name System)이라고 한다.
애플리케이션 프로토콜인 DNS를 사용해서 주고받는다.
지역 네임 서버(지역 DNS 서버)는 DNS 서비스를 제공한다. IP주소와 도메인 대응표를 관리한다.
클라이언트와 직접 주고받기를 하는 것은 지역 네임 서버이다. 하지막 몇 십억 개나 되는 방대한 IP 주소를 한 대의 기기에서 관리할 수는 없으므로, 실제로는 여러 개의 네임 서버와 연계하여 서비스를 제공하고 있다.
지역 네임 서버는 자신의 대응표에 없는 도메인을 물어보면, 먼저 DNS를 총괄하는 루트 서버에게 조회한다. 예를 들어 🔎www.cyber.co.kr의 IP 주소를 조회하는 경우의 흐름을 살펴보자.
- 루트 서버 : 지역 네임 서버로부터 조회 요청을 받아
kr을 담당하는 네임 서버가 있는 곳을 가르쳐준다.- 지역 네임 서버로부터 조회 요청을 받아
[co.kr](http://co.kr)을 담당하는 네임 서버가 있는 곳을 가르쳐준다.- 지역 네임 서버로부터 조회 요청을 받아
cyber.co.kr을 담당하는 네임 서버가 있는 곳을 가르쳐준다.- 지연 네임 서버로부터 조회 요청을 받아
www.cyber.co.kr을 담당하는 IP주소를 가르쳐준다.
이렇게 여러 개의 네임 서버를 따라가서 최종적으로 목적하는 도메인을 관리하고 있는 네임 서버까지 도달해서 IP 주소를 조사한다. 때문에 상위의 네임 서버에는 하나 아래 층에 있는 네임 서버의 IP 주소가 등록되어 있다.
💡 inconfig는 자신의 컴퓨터의 접속 상태를, ping은 통신하고 싶은 상대의 컴퓨터의 접속 상태를 조사하는 명령이다.
ipconfig는 windows 상에서 TCP/IP 설정에 관련된 정보를 표시하는 명령이다. (UNIX, Linux에서는 ifconifg). 여기서는 windows의 명령 프롬프트에서 실행한 예를 보겠다.
네트워크에 접속할 수 없을 때 시험해보면 좋다.
자신의 IP 주소나 서브넷 마스크 등을 알 수 있다.
ping은 특정 컴퓨터가 네트워크상에 존재하고 있는지를 조사하고, 존재하고 있다면 그 통신 상태 등을 표시하는 명령이다. ICMP메시지를 사용한다.
웹 페이지가 표시되지 않을 때 시험해보면 좋다.
ping (도메인명orIP주소)
응답이 없을 경우 Request Timed out
나쁜 뜻을 가진 사용자에 의해 정보가 악용될 우려가 있기 때문에 관리자가 ICMP의 주고받기를 금지하고 있는 경우도 있다.
- 네트워크층의 가장 중요한 역할은 무엇입니까?
수신처까지의 경로를 결정하여 데이터를 전달
네트워크 층은 인터넷층이라ㅗ도 하며, 송신측에서는 데이터에 수신처를 특정하는 번호(IP 주소)등을 기록한 IP 헤더를 붙여서 데이터 링크측에 전달하며, 수신측에서는 IP 헤더를 보고 데이터의 손상 유무와 자기 앞으로 온 데이터인지를 확인하여 트랜스포트층의 지정된 프로토콜에게 데이터를 전달한다.
- IPv4 주소는 몇 비트로 이루어져 있습니까?
32비트
- 네트워크간을 연결해서 패킷이 수신처에 전달 될 때까지 길을 안내하는 기기를 무엇이라고 합니까?
라우터(router)
라우터의 역할이 네트워크층의 역할이라고 해도 될 만큼, 라이터의 네트워크층에서는 IP 헤더에 기록된 수신처의 IP주소를 보고 그 다음 전송처를 결정한다.
- 통신 세계에서 컴퓨터간의 거리는 통과한 라우터의 개수로 나타내는 데, 이때 사용하는 단위를 무엇이라고 합니까?
홉(hop)
홈은 패킷의 수명이라고도 하며, 패킷이 통과할 수 있는 라우터의 개수를 나타내는 단위이다.
- 네트워크층에서 IP를 신뢰성면에서 도와주는 프로토콜은 무엇인가?
ICMP
IP는 트랜스포트층에서 UDP와 똑같이 비커넥션형 통신을 수행한다. 이런 IP를 도와 IP 데이터그램의 통신 상태 등을 필요에 맞게 송신처에게 알려주는 것이 ICMP이다.
- 서브넷 마스크를 사용한 서브넷을 만들면 어떤 장점이 있나요?
규모가 큰 네트워크에서 관리하기가 편해진다.
서브넷 마스크를 사용하여 가상으로 네트워크부를 늘리면 회사 등 네트워크 규모가 큰 경우 서브넷을 사용하여 부서나 층 단위로 세분화할 수 있으므로 관리하기 쉬워진다.
- DNS란 무엇입니까?
숫자로 된 IP 주소와 문자로 된 도메인명을 처리하는 서비스
IP 주소는 숫자로 되어 있어 사람이 기억하고 처리하기 어렵다. 그래서 IP 주소에 상응하는 문자로 된 도메인명을 개발했다. DNS는 도메인명을 IP주소로 바꿔주는 시스템이다.
8, 통신하고 싶은 상대 컴퓨터의 접속 상태를 조사하는 명령은 무엇입니까?
ping
ping은 특정 컴퓨터가 네트워크 상에 존재하는지 여부를 조사하고, 그 통신 상태 등을 표시하는 명령이다. 웹 페이지가 표시되지 않을 때 시험해보면 좋다.
ipconfig는 자신의 컴퓨터의 TCP/IP 설정에 관련된 정보를 표시하는 명령이며, tracert는 수신처까지의 경로를 조사하는 명령이다.