06. IP프로토콜 구조 - 멀리있는 컴퓨터끼리는 이렇게 데이터를 주고받는다

김아름·2021년 12월 16일
0

네트워크 기초

목록 보기
6/15
post-thumbnail

🍂 IPv4프로토콜

1. IPv4가 하는일

  • 네트워크 상에서 데이터를 교환하기 위한 프로토콜
  • 데이터가 정확하게 전달될 것을 보장하지 않음
  • 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성도 있음
  • 악의적으로 이용되면 Dos공격이 됨
  • 데이터의 정확하고 순차적인 전달은 그보다 상위 프로토콜인 TCP에서 보장

2. IPv4 프로토콜의 구조

  • 20바이트 + 옵션이 붙을때마다 +4바이트 해서 총 60바이트 까지 가능
  • 빨간색 두줄은 출발지 IP주소와 목적지 IP주소

  • 버전은 무조건 4만 온다고 생각해라 버전6은 아예 구조가 다름
  • IP Header Length는 20이 와야하는데
  • 이진수 4개로 표현할수있는 최대숫자는 1111 --> 15라서 못쓴다.
  • 나누기 4를 해서 IP Header Length를 써준다
  • 20은 나누기 4를한 값 5를 이진수로 바꾸면 1010
  • TOS는 옛날 개발할때 쓰던것, 지금은 사용X, 00으로 비워둠
  • Total Length는 헤더의 길이가 아니라, 페이로드까지 합쳐진 길이
  • 상위계층부터 인캡슐레이션되어 내려온 데이터의 길이 전부 합침

  • Identification + IP Flags + Fragment Offset은 세트라고 생각
  • 데이터가 큰것을 보낼때 최대전송단위가 있기 때문에 잘게 쪼개서 보내는데,
  • 그 때 필요한 값들임

🌿 Identification

  • 원래 하나의 데이터를 쪼개서 보내면, 받는입장에서는 다시 원래 데이터로 합쳐야 하는데, 하나였던걸 알아보기 위해 표시하는 것

🌿 IP Flags

  • 3비트, 첫번째꺼는 안씀
  • 두번째꺼는 패킷을 보내는사람이 데이터를 안쪼갠다고 명시하는 것
    ex) 최대전송단위가 100메가인데 7개로 쪼개지 않고 700메가를 통으로 보낸다고 지정하는 것, 그렇게 지정하면 전송이 안됨, 그래서 거의 안씀
  • 세번째꺼는 뒤에 데이터가 더 온다고 알려주는 것 (쪼개서 보내면1, 안쪼개면0 )

🌿 Fragement Offset

  • 데이터가 순서대로 오지는 않기 때문에 꼬일수 있다
  • 순서를 알아볼수 있게 해주는 것
    ** 참고: offset : 어느기준으로부터 얼만큼 떨어져있다
  • 1번데이터는 시작점부터 0만큼 떨어져있다. 그래서 0으로 세팅 됨
  • 2번데이터는 시작점으로부터 1번데이터 크기만큼 떨어져있다.
  • 3번데이터는 1+2번데이터 크기만큼 떨어져있다.
  • 4번데이터는 1+2+3번데이터 크기만큼 떨여저있다.
  • 5번데이터는 1+2+3+4번데이터 크기만큼 떨어져있다.
  • TTL은 시간설정? 횟수설정?
  • 장비 라우터등을 하나 지날때마다 1이 줄어듬

  • Protocol은 상위프로토콜을 알려주는 것
  • IP프로토콜 입장에서 상위프로토콜을 올수잇는것은 ICMP, TCP, UDP
  • ICMP ( 3계층 ) --> 01로 세팅
  • TCP (4계층 )--> 06으로 세팅
  • UDP (4계층 )--> 17로 세팅

  • Header Checksum은 이 헤더가 오류가 있는지 없는지 확인하는 값
  • 헤더에 있는 여러가지 필드를 가지고 값을 계산하여 보내면
  • 받은쪽에서 세팅된 값들을 계산해보고 Header Checksum의 값과 비교
profile
쿄쿄쿄

0개의 댓글