Ethernet

  • 컴퓨터 네트워크 기술의 하나로, 물리 계층와 데이터 링크 계층으로 나뉜다.
  • 물리 계층           =>  신호와 배선 정의
    데이터링크 계층   =>  MAC 패킷과 프로토콜의 형식 정의 

Ethernet 헤더 구조

Destination MAC( 6 bytes ) Source MAC ( 6 bytes ) Type ( 2 bytes )
목적지 주소     출발지 주소    상위 계층 Protocol 종류 구분
( IP : 0x0800, ARP : 0x0806 등 ) 

                                      

IP ( Internet Protocol )

  • 컴퓨터가 갖게 되는 주소
  • Wifi가 달라질 때마다 얻는 주소가 달라진다.
  • 비신뢰성, 비연결성 통신이다.
    비신뢰성 => 흐름에 관여하지 않기 때문에 보낸 정보가 제대로 갔는지 보장 X
                  ex) 전송 과정에서 패킷이 손상되거나, 전송한 패킷의 순서가 뒤죽박죽이거나, 같은 패킷이
                         두 번 전송될 수도 있다.
  • 신뢰성을 보장하기 위해선 IP의 상위 프로토콜인 TCP를 사용해야 한다.
                  

IP 헤더 구조

Version : IP의 버전을 나타냄 ( IPv4 / IPv6 )

 

IHL      : IP헤더의 길이

 

TOS     : 서비스의 우선 순위를 제공

 

Total Length : ethernet패킷과 패킷 끝에 필요없는 부분을 제외한 순수 IP 패킷의 길이

 

Identification : 분열이 발생했을 때 원래의 데이터를 식별하기 위해서 사용  

 

Fragment Flags ( IP Flags )
     - x : 항상 0으로 설정
     - D : 분열 여부를 나타냄 ( 0 => 분열 가능, 1 => 분열 방지 )
     - M : 분열될 조각이 더 있는지 판단 ( 0 => 마지막 조각, 1 => 분열될 조각 더 있음 )

 

Fragment Offset : 8바이트 offset으로 조각에 저장된 원래 데이터의 바이트 범위 나타냄


TTL : 데이터를 전달할 수 없는 것으로 판단되어 소멸되기 이전에 데이터가 이동할 수 있는 단계의 수


Protocol : 상위계층 프로토콜 표시 ( TCP : 6, UDP : 17 )

 

Header Checksum : IP header의 체크섬을 저장

 

Source Address : 출발지 IP 주소

 

Destination Address : 목적지 IP 주소

 

TCP

  • 데이터를 송수신하기 위해 IP를 사용하는 프로토콜
  • 데이터를 세그먼트 단위로 잘게 쪼개서 전송한 후 데이터를 받은 도착지에서
    다시 재조립하는 과정을 거친다.

 

TCP 헤더 구조

Source Port : 데이터를 전송하는 곳의 포트번호

 

Destination Port : 목적지의 포트번호 ( 80 : HTTP, 443 : HTTPS )

 

Sequence Number : 데이터 byte의 고유한 일련번호. 이를 이용하여 순서를 올바르게 배열한다.

 

Acknowldegement Number
      - 다음 세그먼트 수신 준비가 되었다는 여부와 수신이 완료되었다는 확인 메시지 전달

 

Offset ( = Header Length )
      - 필드값 * 4 = TCP Header 길이

 

Reserved : 차후 사용을 위한 예약 필드

 

TCP Flags
  - TCP flag는 비트로 되어 있기 때문에 flag를 체크해 줄 때 비트 연산자를 써야 한다.
    ex) if(tcphdr->th_flags & TH_RST ) 이런 식으로 비트연산자(&,|,^ 등등) 을 써서 확인해야 한다.


  SYN : 연결 요청 플래그 ( 통신 시작시 세션을 연결하기 위한 플래그 )


  ACK : 응답 플래그 ( 송신측으로부터 패킷을 잘 받았다는 걸 알려주기 위한 플래그 )


  FIN  : 연결 종료 플래그 ( 세션 종료 )


  RST  : 연결 재설정 플래그 ( 강제 연결 종료 )


  PSH : 넣기 플래그 ( 버퍼가 채워지기를 기다리지 않고 받는 즉시 전달 )
          -> 버퍼링 없이 7계층의 응용프로그램에게 바로 전달한다.


  URG : 긴급 데이터 플래그   

 

Window Size : 송신 시스템의 수신 버퍼의 크기를 바이트 단위로 나타냄

 

Checksum : TCP 세그먼트 내용이 유효한지 확인 및 손상 여부 검사

 

 

※ 데이터 수신 측 (receiver) 이 필요한 정보 => window size, Acknowledgement Number

                                                                                        

'TCP, IP 네트워크 프로그래밍' 카테고리의 다른 글

TCP 통신  (0) 2022.02.03

+ Recent posts