> For the complete documentation index, see [llms.txt](https://minhee0327.gitbook.io/mini-til/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://minhee0327.gitbook.io/mini-til/network/tcp-and-ip-basic/06_.md).

# 06 네트워크계층

* Intro
  * 인터넷 계층
* 네트워크 계층의 역할
  * 통신 방법의 차이를 흡수, 통신방법이 다른 네트워크상의 컴퓨터끼리도 주고받기 가능. &#x20;

    (케이블차이, 통신형식의 차이 극복!)
  * **통신상대 지정**
    * '누가 누구에게 전달할지?'에 대한 중요한 정보를 다룸
    * 통신상대를 정하기 위해 네트워크 상에 존재하는 모든 기기에는 고유 주소가 할당되어있음
  * 목적지까지 경로결정
    * 목적지까지 경로가 여러개 있는 경우, 적절한 경로를 사용하여 전달하는 역할
* IP 프로토콜
  * **데이터 링크계층에전달**
    * 트렌스포트로부터 전달받은 데이터에 목적지를 특정하는 IP주소등을 기록한 IP헤더를 붙여 데이터 링크로 전달
    * IP데이터그램: 데이터에 IP헤더 붙인것을 뜻함.
    * 데이터 링크 계층에서 다룰 수 있는 크기보다 클 때는 분할후 헤더를 붙임
  * **Best Effort방식**으로 데이터 전송
    * 노력은하지만, 결과보장은 하지 않음
    * 헤더가 깨지지 않았는지 확인하거나, 목적지 주소가 존재하는지 정도의 판단처리만하고, 재전송 처리는 X
  * **최적 경로로 보내기**
    * 목적지까지의 경로나, 통신상태를 보고 지금 가장 빨리 목적지에 전달하기 위한 좋은경로를 판단해서 보내는 기능
  * **트랜스포트계층에 전달.**
    * 수신측에서 IP헤더에 쓰여진 목적지 주소(IP주소)를 확인하고, 자기 앞으로 온것만 받음.
    * 그리고 트랜스 포트 계층의 지정된 프로토콜에 전달.
    * 분할되있으면 조립후 전달
* IP 주소(IPv4)
  * IP주소는 네트워크상 기기 구별하기 위한번호
  * IPv4는 32자리 비트열로 이루어짐. 8bit씩 구분하여 10진수로 나타냄
  * 예: 192.168.15.10.
  * 192.168.까지를 네트워크부 | 15.10.를 호스트부라고 한다.
  * 네트워크부에서는 고유번호가 들어가고, 호스트부에는 각 컴퓨터를 나타내는 번호가 들어간다.
  * 완전 똑같은 주소를 가진 컴퓨터가 여러대 존재하면, 컴퓨터를 지정한다는 목적을 이룰 수 없기 때문에, 번호 중복을 피하기 위해 ICANN이라는 기관에서 전세계IP를 관리하고 있음
  * 네트워크부와 호스트부의 경계를 **서브넷마스크(또는 넷마스크)**&#xB77C;는 값을 사용하여 경계를 나타낸다.
    * IP주소: 192.168.15.10
    * 서브넷마스크: 255.255.0.0
    * 혹은 \[IP주소]/\[네트워크부비트수] (예: 192.168.15.10/16)
* IP 주소(IPv6)
  * IPv4로 IP 주소가 고갈될 우려가 있어 IPv6가 도입.
  * IPv4로 나타낼수 있는 주소는 약 43억개. 그래서 도입된 IPv6

    |        | IPv4  | IPv6             |
    | ------ | ----- | ---------------- |
    | 주소의 길이 | 32bit | 128bit           |
    | 주소의 개수 | 약 43억 | 약 340조 X 1조 X 1조 |
    | 표기방법   | 10진법  | 16진법             |
    | 암호화 기능 | 옵션    | 기본               |
    | 멀티캐스트  | 비대응   | 대응               |
  * IPv4 와 IPv6가 호환되지는 않음
  * IPv6표기방법: 주소값을 16비트마다 콜론(:)으로 구분하고 16진수로 표기.(6비트씩 8개로 나눔. 각각 16진수로 나타냄)
  * 생략규칙
  * 서브넷마스크 표기(일반적으로 /64 로 네트워크부 비트수를 표기함)
* 목적지까지 길 안내
  * 대부분의 통신서비스에서는 송신측에서 수신측 컴퓨터에 도달하기까지 여러개의 네트워크를 경유함.
  * 라우터
    * 네트워크간을 연결해서 패킷이 목적지에 전달될때까지 길안내를 하는 기기
    * 네트워크 계층에서는 IP헤더에 기록된 목적지의 IP주소를 보고 그 다음 전송처를 결정함.
    * 길 안내를 하기 위해 일단 패킷 회수
    * 목적지까지의 경로를 결정하거나 패킷의 크기 조정
  * 통신세계에서 컴퓨터 사이의 거리를 통과한 라우터의 갯수로 사용하는 단위를 **홉**이라고함.
* 수신측의 처리
  * 트렌스포트계층에 전달
    * IP헤더를 보고 데이터가 깨졌는지, 자기앞으로 온것인지 확인
    * 트랜스포트계층의 지정된 프로토콜로 전달
* 네트워크 계층의 신뢰성
  * 신뢰성이 떨어지는 IP를 보조하기 위해 네트워크 계층에 ICMP라는 프로토콜이 있다.
  * IP는 비 커넥션형 통신을 수행한다.(UDP와 유사한 방식)
  * 따라서 데이터가 상대에게 전달 됬는지 아닌지 전혀 관여하지 않는다.
  * IP 보조하는 ICMP
    * 네트워크계층에는 신뢰성 면에서 IP를 도와주는 프로토콜인 ICMP, IPv6에서는 ICPMv6가 있다.
    * 이들은 IP 데이터 그램의 통신상태등을 필요에 맞게 송신층에 알려준다.
    * ICMP헤더와ICMP데이터에 IP헤더를 붙인형태로 송신측에 보낸다.
    * ICMP헤더구성 (타입, 코드, 체크섬)
* IP 주소의 설정
  * 고정해서 할당하는 방법 or 필요할때만 자동으로 할당하는방법
    * 고정IP주소 할당: 개별적으로 설정
    * 자동으로 할당: 필요할때만 자동으로 IP주소를 할당하는 프로토콜(DHCP)사용. 그러면 네트워크에 접속함과 동시에 필요한 설정이 자동으로 수행
      * DHCP클라이언트: DHCP서버에게 IP주소를 요청하고 일시적으로 할당받음
      * DHCP서버: 클라이언트의 요청에 대한 응답으로 IP주소를 빌려주거나, 서브넷 마스크의 설정정보 제공
* DNS(Domain Name System): IP주소와 도메인명을 처리하는 서비스.
  * 애플리케이션 프로토콜
  * 숫자로 된 IP주소를 다루기 어려우므로 문자로 대신할수 있는 메커니즘 개발
