일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Batch
- 보안
- Baekjoon
- gcp
- sequelize
- 파이썬
- 스프링 배치
- 시스템 해킹
- webhacking.kr
- hackctf
- pwnable.xyz
- docker
- 사이버보안
- 백준
- nodejs
- 리버싱
- 포너블
- 웹해킹
- node.js
- cloud run
- gcp cloud build
- Python
- spring Batch
- 네트워크
- 웹보안
- 회고
- programmers
- 프로그래머스
- kotest
- gcp ci/cd
uju's Tech
Network Layer- IPv4(Internet Protocol version 4) 본문
<본 포스팅은 공부목적으로 작성되었습니다. 혹시 틀린 부분이 있거나 문제가 되는 부분이 있다면 답글 달아주세요!>
1.IPv4 datagram format
IPv4의 헤더는 20바이트.
ver: ip protocol 의 버전 숫자가 들어간다.
head len: header length(바이트 단위) -20바이트가 기본이지만 뒤의 option에 데이터가 들어갈수도 있어 길이가 가변적이다. head len을 명시하는 이유는 어디까지 헤더인지 명시하기 위해서이다.
type of service(TOS): 요구되는 서비스 품질
length: 헤더와 데이터 길이를 포함한 전체 길이(바이트 단위)
16-bit identifier: 각 조각이 동일한 데이커그램에 속하면 같은 일련번호를 공유
flags: 3비트로 이루어져 있다
fragment offset: 패킷이 단편화 되었을 때 단편화 순서를 설정하는 부분(조각나기 전 우너래의 데이터그램의 8바이트단위 위치)
-->16-bit identifier,flags,fragment offsetdms ip fragmentation 과 reassembly에 관련된 필드// MTU때문에 단편화
time to live(TTL): 패킷의 수명
upper layer: 어느 상위계층 프로토콜이 데이터 내에 포함되었는가를 보여줌 -->수신자가 받아서 그 뒤의 body부분을 누구에게 보내야할지 판단해야해서 필요하다
header checksum: 헤더에 대한 오류 검출
2.Fragmentation (단편화)
ex-1 )
MSS=40 bytes(Maximum Segment Size):전송가능한 application data의 최대 크기
tcp header=20바이트
MTU=80bytes //link label에서 배달할 수 있는 패킷의 최대 크기 (IP header 포함)
MTU=60 bytes
4000bytes: header과 body vhgka
more의 의미: 뒤에 더 쪼개진 패킷 있다고 알려준다//1일 경우]
0이라면 offet확인해서 중간에 빈칸 있는지 확인
offset: data크기를 8로 나눠준다
ex-2) suppose datagrams are limited to 1540 bytes (including header) between source a and destination host b. Asuuming there is no option field, how many datagrams would be required to send an MP3 file consisting of 3milion bytes over TCP.
sol) 3million bytes-> 3*10^6 bytes
1540 bytes datagrams-> 20bytes Ip header+ 1520 bytes Ip payload
1520 IP payload ->20 bytes TCP header+ 1500 user data
number of datagrams =[3x10^6/1500]=2000
answer= 2000개
ex-3) a--r1--r2--r3--b
a와 r1사이,r1과 r2사이, 그리고 r3와 b사이 link의 mtu는 1500bytes 이고, r2와 r3사이 link의 mtu는 1000bytes이다.
a가 b로 73000bytes 크기의 file을 tcp/ip를 사용해서 전송한다. a에서 전송한 packet들이 r1,r2,r3를 거쳐 b에 도착한다고 할 때, a의 file 전송이 시작해서 마칠 때까지 b에 도착하는 packet의 개수는 모두 몇 개인가?
sol) tcp header=20 bytes, ipv4 header =20bytes -->1500=40+1460
-->73000=1460*50 a에서 50개 packet 생성
r2에서 fragmentation 이 발생. 1500 bytes packet이 1000bytes packet과 520 bytes packet으로 분할됨
'Network' 카테고리의 다른 글
Telent 서버 구성해주기 (0) | 2020.06.13 |
---|---|
Network Layer-router (0) | 2020.06.13 |
Network Layer-outline,service model (0) | 2020.06.13 |