4日目ネットワークトレーニング(2022.01.06)-まとめ


IPヘッダ内部コンテンツ

IPヘッダ


Version : IPv4 or IPv6를 구별하는 정보
IHL(Ip Header Length) : 헤더의 길이 (옵션이 있으면 >=5 , 없으면 4 (20Byte) )
Protocol : 상위 프로토콜에 대한 정보들
Total Length : 상위 프로토콜에서 내려온 데이터의 총 길이
Identification : 인식번호, IP패킷을 구분하기 위해 부여하는 번호로 단편화 패킷을 조립할 때 이용 ( 0x298a 10634.. 등)
Fragment offset : 상위에서 내려온 분할된 데이터의 시작 번호
Time to Live(TTL) : 경유할 수 있는 최대 라우터의 수. TTL이 없으면 라우터 내에서 루핑이 일어나 루핑방지용으로 사용된다.
Header Checksum : 패킷의 헤더에 손상을 검출하기 위한 필드, 헤더부분만 계산한다.
Source Addr : 발신자 주소
Destination Addr : 수신자(목적지) 주소
---------------------------------------------------------------------------------------------------------------------

Ping data(32Byte) + ICMP 8Byte + IP 20Byte <= 1500Byte (Maximum Transmission Unit)


ex) 단편화된 data    +    IP    <=    1500
 ---------------       -----
     1480Byte          20Byte

옆자리에 3000Byte 데이터를 1번 보냈을 때의 단편화

     Data 3000Byte + ICMP 8Byte = 3008Byte

		IHL	Total Length	Identification	IP flag M/F	Offset
  1)        5(20Byte)	   1500Byte	   36808	      1	         0 (0~1479) 
  2)         5(20Byte)	   1500Byte	   36808	      1	         1480(1480~2959)
  3)         5(20Byte)	   68Byte	   36808	      0	         2960(2961~3007)
			  ICMP(8Byte)

TCPとUDP

TCP(안전) :  신뢰할 수 없는 공용망에서도 정보유실 없는 통신을 보장하기위해 세션을 안전하게 연결하고 데이터를 분할하고 분할된 패킷이 잘 전송되었는지 확인하는 기능을 가지고 있다.
패킷에 번호를 부여해서 보내고 잘 전송되었는가에 대해 응답을 받는다. 응답이 오지 않을 때, 패킷을 재 전송할수도 있고, 재응답 요청을 할 수도 있다.

3-way handshaking : TCP에서 유실없는 안전한 통신을 위해 통신 시작 전, 사전 연결작업(SYN)을 진행하고 3번의 패킷을 주고 받으면서 통신을 서로 준비하는 과정.
서버에서도 3번째 ACK 메시지가 도착해야 세션확립상태(ESTABLISHED)로 변경된다.

SYN : 서버와 클라이언트의 통신을 위한 정보를 동기화(인사)
	( IP:port , 시퀀스넘버 , buffer size(윈도 사이즈) , MSS등..)
    MSS(Maximum Segment Size)는 헤더에 존재하지 않고 옵션에 존재한다.

UDP(신속) : 데이터 전송의 정확성을 보장하지 않는 프로토콜이므로 제한된 용도로만 사용. ( 음성이나 영상 )

* ICMP(Internet Control Message Protocol) : 에러에 대한 정보를 알려주는 프로토콜.
cmd ping 같은 경우도 ICMP의 종류

* 버퍼사이즈(윈도 사이즈)가 0일경우, 세션만 유지시키고 데이터를 기다리는 상태 ( 흐름제어 )

* 흐름제어 :  송신측이 수신측의 처리속도 보다 더 빨리 데이타를 보내지 못하도록 제어해 주는 것)

* 슬라이딩 윈도우 : 서버에서 한 번에 받을수 있는 데이터 크기를 윈도 사이즈라고 하고, 네트워크 상황에 따라 이 윈도 사이즈를 조절하는 것이 슬라이딩 윈도우이다.

Port Number

Port Num : 16bit로 표기 2^16 = 65,536개의 포트가 존재

시스템포트( 0 ~ 1023 ) : well-known port / 서버용

사용자(업체) 포트 ( 1024 ~ 49151 ) : 레지스트리(등록) 포트 / 서버용

동적,사설,임시포트 ( 14152 ~ 65535 ) : 클라이언트용 포트

출발지 포트가 13959, 목적지 포트가 80이면 클라이언트가 서버에 보내는 포트이고
출발지 포트가 80, 목적지 포트가 13959이면 서버가 클라이언트에 보내는 포트이다.