zenn.skin 무료버전 배포중!
자세히보기

CS/Network

[Network] IP(Internet Protocol)

koosco! 2022. 10. 29. 11:23

1. IP(Internet Protocol)

IP는 Network Layer에서 송신자와 수신자가 패킷을 교환하기 위해 사용하는 프로토콜입니다.

IP는 패킷(데이터그램)을 여러 개의 덩어리로 나누어 전송하게 됩니다.

IP는 패킷의 형식을 정의하고 주소 시스템을 사용하는 프로토콜입니다.

 

IP는 다음과 같은 특징을 갖습니다.

  • IP는 비신뢰성(unreliability)이다
    • 비신뢰성은 전송 흐름에 관여하지 않기 때문에 보낸 정보가 제대로 갔는지 보장하지 못하는 것을 의미합니다.
    • 패킷은 손상되거나 loss될 수 있고 순서가 바뀌거나 중복으로 전달될 수도 있습니다.
    • 패킷 전송과 순서를 보장하기 위해서는 상위 Layer에서 TCP와 같은 프로토콜들을 이용해야 합니다.
  • IP는 비연결성(connectionlessness)이다
    • 통신 이전에 어떠한 사전 호출 / 연결 설정 없이 두 end host간에 트래픽을 교환할 수 있습니다.
    • 즉, 전송 전에 미리 연결을 설정하지 않아도 됩니다.

2. IP packet의 구조

패킷은 크게 header와 payload를 구성되어 있습니다.

header는 송신지 주소, 목적지 주소, 그리고 routing을 위한 메타 데이터를 포함하고 있습니다.

payload(Data)는 상위Layer에서 전달받은 데이터에 해당합니다.

  1. Version: IP 프로토콜의 버전, IPv4는 4, IPv6는 6
  2. Header Length: IP 프로토콜 헤더의 길이
  3. Type Of Service: 데이터 종류에 따라 지연 통신효율, 신뢰성 우선순위를 지정할 수 있습니다.
  4. Total Length: 헤더와 payload를 더한 전체의 패킷의 길이
  5. Identification: 각 데이터 그램을 분별하기 위한 식별번호(fragmantation되었을 때 사용)
  6. Flags: 데이터그램의 fragment에 관한 정보
    1. 첫번째 비트: 사용 안함
    2. 두번째 비트: fragment 끝남
    3. 세번째 비트: 아직 fragment가 남음
  7. Fragment Offset: 각 fragment의 원래 데이터에서의 위치를 나타냄
  8. TTL(Time to Live): 통과 가능한 라우터의 수를 나타냄
    1. 라우터를 경유할 때마다 하나씩 감소하게 됨
    2. 패킷이 루프에 빠지는 경우 부하를 줄이는 역할을 할 수 있음
  9. Protocol Type: 데이터에 포함되는 상위 프로토콜(TCP: 6, UDP: 17)의 종류를 나타냄
  10. Header Checksum: IP 프로토콜 헤더의 내용이 바르게 교환되고 있는지 점검. 수신된 패킷을 검사하는 데 사용
  11. Option: 경로배정 및 보안과 같은 제어 기능을 위한 부가 정보

 

3. 캡슐화(Encapsulation)

상위 Layer에서 전달받은 payload에 header를 붙이고 아래 Layer로 내리는 과정을 반복하게 되는데 이러한 과정을 캡슐화(Encapsulation)라고 합니다. 캡슐화를 통해 상위 Layer에서 하위 Layer로 payload를 전달하면 하위 Layer에서는 전달받은 payload의 내용을 볼 수 없기 때문에 "캡슐"화라고 합니다.

 

목적지에 도착된 패킷은 캡슐화를 역으로 하는 역캡슐화(Decapsulation)를 통해 상위 Layer로 전달받은 데이터를 올려줍니다.

 

4. IP version

  • 현재 인터넷에서 사용되고 있는 IP는 4번째 버전인 IPv4입니다.
    • 하지만 고갈 문제가 대두되고 있어 NAT나 CIDR같은 방식을 사용해 계속 사용하고 있습니다.
  • 장기적인 IP address 고갈 문제 해결을 위해 IPv6가 개발되었습니다.

참고: https://themangs.tistory.com/entry/IP-헤더-구조-IP-패킷-구조-IP-헤더-패킷-구조

'CS/Network'의 다른글

  • 현재글 [Network] IP(Internet Protocol)

관련글