Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Tags
more
Archives
Today
Total
관리 메뉴

나의 IT일지

TCP 통신 과정과 프로토콜 헤더 본문

정보보안

TCP 통신 과정과 프로토콜 헤더

세레프 2023. 6. 2. 12:55

TCP 통신 과정

 TCP는 연결지향방식을 사용하는 4계층 프로토콜로, handshake라는 방법을 통해서 서로의 유무를 확인하고 네트워크를 연결한다. 그럼 handshake가 무엇일까?

 handshake클라이언트가 서버의 존재 여부를 확인하기 위해서 사용하는 방식으로, 다음과 같은 방식으로 클라이언트오 서버의 연결이 진행된다.

  1. 클라이언트가 서버에게 연결요청데이터를 전송
  2. 서버쪽에서는 그에 대한 응답으로 응답데이터를 전송. 이때, 클라이언트에게 연결요청데이터를 같이 전송.
  3. 클라이언트 측에서 연결요청데이터의 응답데이터를 서버에게 전송
  4. 클라이언트와 서버가 연결 => "established"상태

 반면 클라이언트와 서버의 연결을 정상 종료할 때에는 다음과 같은 방식으로 진행된다.

  1. 클라이언트에서 서버에게 종료 요청 데이터 전송
  2. 서버측에서 응답 데이터 전송
  3. 잠시 후, 서버측에서 클라이언트에게 종료 요청 데이터 전송
  4. 클라이언트측에서 응답 데이터 전송
  5. 클라이언트와 서버가 연결 종료

 

프로토콜 헤더

 데이터를 전송하기 위해서는 OSI 7계층을 바탕으로 데이터를 포장해야 한다. 이를 캡슐화라고 하는데, 데이터를 해당 계층의 프로토콜를 통해 헤더를 데이터에 추가해서 캡슐화하고 상대쪽 컴퓨터로 데이터를 신호로 전송한다. 그리고 해당 신호를 받은 컴퓨터는 언캡슐화를 통해 해당 데이터에 추가된 헤더를 해제한다. 이때, 양측에서 사용하는 프로토콜은 동일해야 한다. 

 

프로토콜 모델

터미널끼리 데이터를 통신할 때, 데이터는 강력한 신호로 변조되며, 전송한 뒤에 강력한 신호를 복조해서 데이터를 얻는다. 이때 변조할 때 사용되는 것이 프로토콜이다. 프로토콜이란 네트워

my-it-diary.tistory.com

 

IP 헤더

  • identification패킷 식별번호, 단편화된 패킷들은 같은 식별번호를 갖는다.
  • ip flag : 패킷의 단편화 관련 정보, 패킷의 용량이 MTU를 벗어나게 되면 패킷을 나눠서 전송한다. 그래서 해당 위치의 정보를 통해 단편화의 여부를 확인 할 수 있다.  
    • D : 해당 패킷의 단편화의 활용 유무 (활용 0, 비활용 1)
    • M : 단편화 조각의 유무 (마지막 조각 0, 추가 조각 존재 1)
  • fragment offset : 단편화된 데이터의 순서, 선출후입 형식으로 데이터를 전송한다.
  • time to live (TTL) : 패킷이 존재할 수 있는 시간, 해당 패킷이 지나갈 수 있는 라우터(홉)의 수로, 라우터 통과시 1소모되며, 0이 되면 자동적으로 패킷이 삭제가 된다. network looping을 방지하기 위해 사용한다.
  • protocol : 해당 패킷에 포함되어 있는 프로토콜, ICMP는 1, TCP는 6, UDP는 17로 표현한다.
  • source ip address : 출발지 IP주소
  • destination ip address : 목적지 IP주소
  • Checksum : 해당 패킷의 오류를 검사하기 위한 헤시, 데이터를 생성하면 해당 데이터의 정보를 담는 헤시가 같이 생성되는데, 해당 데이터는 정보를 변경하면 헤시도 같이 변경된다. 그래서 Checksum을 통해서 해당 데이터의 변조를 검증한다.

 이렇게 패킷의 용량이 크면 단편화를 하게 되며, 단편화된 패킷은 마지막 패킷이 도착하면 다시 결합하게 된다.

 

ICMP 헤더

  • Type : 해당 패킷의 유형
    • 0 : 응답 패킷
    • 3 : 오류 패킷 (해당 패킷은 도착하지 않음)
    • 8 : 요청 패킷
  • idenifier : 해당 패킷의 세션값, idenifier가 같은 것은 해당 패킷의 통신을 끊지 않은 것이다.
  • sequence : 해당 패킷의 통신 순서, sequence가 연속적인 것은 해당 패킷은 연속적으로 통신한 것이다.
  • Checksum : 해당 패킷의 오류를 검사하기 위한 헤시


25번 패킷 26번 패킷
27번 패킷 28번 패킷

 이때, idenifier 값이 같고 sequence값이 연속적인 경우, reply 패킷의 IP헤더의 identification을 보면 연속적인 값을 가지는 것을 확인 할 수 있다. 이는 request를 보내어도 반대쪽 컴퓨터에서 제일 먼저 해당 request 패킷을 처리하지 않으며, reply는 반대쪽 컴퓨터가 보내는 패킷을 대기중인 상태에서 받기 때문에 나타나는 현상이다.

 

ARP헤더

  • Source Protocol Addrees : 출발지 IP 주소
  • Source Hardware Addrees : 출발지 MAC 주소
  • Destination Protocol Addrees : 목적지 IP 주소
  • Destination Hardware Addrees : 목적지 MAC 주소, 알지 못하는 경우 "00:00:00:00:00:00"로 해당 필드를 채운다. 

 ARP헤더에는 Checksum필드가 없으며, 처음에는 모든 기기의 MAC주소를 알지 못하기에, broadcast(ff:ff:ff:ff:ff:ff)를 통해 해당 IP주소를 가지는 기기를 찾고 해당 기기의 MAC주소를 얻는다.

 

UDP 헤더

  • Source Port : 출발지의 포트 번호
  • Destination Port : 목적지의 포트 번호
  • Checksum : 해당 패킷의 오류를 검사하기 위한 헤시

 

TCP헤더

  • Source Port : 출발지의 포트 번호
  • Destination Port : 목적지의 포트 번호
  • Sequence Number : 세그먼트의 일련 번호, 세그먼트의 용량이 크면 나눠서 전송하기에, 세그먼트의 분실, 지연으로 인해 순서 재배열이 하는 경우 일련번호를 통해 재배열을 한다.
  • Acknowledgment Number : 다음에 받을 세그먼트의 Sequence Number
  • TCP flags : TCP의 전송 유형
    • U (URG ) : 해당 세그먼트 우선 처리
    • A (ACK) :응답
    • P(PUSH) : 지연된 내용 우선처리
    • S(SYN) : 연결요청
    • F(FIN) : 종료
    • R(RST) : 재시작
  • sliding Window : 오류로 인해 누락된 데이터를 재전송함(ARQ)으로써 에러를 제어하는 필드, 수신측의 버퍼(데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역)의 크기에 맞춰 송신측에서 단편화된 데이터를 그룹별로 전송한다. 
    • stop and wait : 순서대로 데이터를 수신하다가 어떤 데이터가 손상이 되었을 경우, 해당 sequence number를 가진 데이터를 다시 전송하도록 요구한다. 이때, 해당 데이터를 수신받지 않는 동안 해당 기기는 다른 데이터를 수신받지 않는다. (sliding Window를 사용하지 않는다.)
    • go back N : 그룹별로 데이터를 수신하다가 어떤 데이터가 손상이 되었을 경우, 해당 그룹의 데이터를 다시 전송하는 형태
    • selective Repeat : 그룹별로 데이터를 수신하다가 어떤 데이터가 손상이 되었을 경우, 수신측의 버퍼에 손상된 데이터외의 데이터를 저장했다가 손상된 데이터를 수신받으면 완성시키는 형태
  • Checksum : 해당 패킷의 오류를 검사하기 위한 헤시
port
 서비스를 정의하는 전용 통신회선으로, 자주쓰이는 서비스로 예약된 주소"Well known service port"와 응용프로그램의 네트워크 통신을 위해 할당된 주소인 " registered port", 사용자 사용할 수 있도록 동적으로 지정되는 주소인 "dynamic port"로 나눠져 있다. 
Well known service port : 0 ~ 1023
registered port : 1024~49151
dynamic port : 49152 ~ 65535 
[tcp]
--일반서비스--
22/tcp : ssh (보안원격접속)
23/tcp : telnet 
80/tcp : http 웹서버
443/tcp : https  보안웹서버
21/tcp : FTP  파일송수신서버 (DATA포트 active=20/tcp passive =1024~랜덤)
139/tcp : NETBIOS 삼바포트

-메일관련-
25/tcp : smtp (메일서버 송신)
110/tcp : pop3 (메일수신)   중계서버에서 전송완료시 메일 삭제
143/tcp : imap (메일수신)   중계서버에서 전송완료시 메일 저장
[udp]
53/udp : dns => 서버간의 전송
67/udp : DHCP
69/udp : TFTP
161/udp : snmp (agent)
162/udp : snmp (manager)

 


wireshark

 타 컴퓨터에거 데이터를 전송하기 위해서는 데이터에게 헤더파일을 추가해서 특정 컴퓨터에게 어떠한 서비스를 제공하도록 한다. 그리고 이렇게 전송되는 데이터는 "wireshark"프로그램을 통해 네트워크 내에서 일어난 데이터의 흐름을 알 수 있다.

 

Wireshark · Go Deep

Wireshark: The world's most popular network protocol analyzer

www.wireshark.org

 Wireshark를 다운받으면, 이제 네트워크의 패킷을 인지할 수 있는 프로그램이 필요하다. 그리고 해당 프로그램은  winPcap이다.

 

WinPcap - Home

For many years, WinPcap has been recognized as the industry-standard tool for link-layer network access in Windows environments, allowing applications to capture and transmit network packets bypassing the protocol stack, and including kernel-level packet f

www.winpcap.org

 이렇게 두 프로그램을 설치하고 Wireshark를 실행하면, 다음과 같은 창이 나타난다.

 위의 네트워크 선택창에서 네트워크를 선택하면 해당 네트워크에서 전송되는 패킷을 감지할 수 있으며, 필터를 통해 필요한 정보만 볼 수 있다.

  • && : 앞의 조건이 참일 경우, 뒤의 조건이 참인 결과 출력 
  • || : 앞의 조건이 거짓일 경우 , 뒤의 조건이 참인 결과 출력
  • == : 앞의 조건이 뒤의 조건에 참인 결과 출력
  • [protocol] : 해당 프로토콜을 사용하는 전송 결과 출력
  • ip.addr : ip주소 일치 내용 검색
  • ip.src : 출발지 IP주소
  • ip.dst : 도착지 IP주소
  • [protocol].[내용] : 해당 프로토콜을 사용한 전송중 내용과 일치한 결과 출력

  그리고 해당 프로그램을 통해 통신 내용을 확인할 수 있는데, 해당 프로그램 로그에 우클릭 후, follow에 있는 stream중 해당 통신에서 사용한 통신 프로토콜(TCP,UDP)를 선택하면 통신 내용을 확인할 수 있다.

  • 패킷의 데이터 내용 확인 방법 
    • 데이터 패킷 선택 후, 좌클릭 → follow클릭 → tcp stream혹은 udp stream 클릭
  • 패킷의 데이터 복원 방법
    • 패킷의 데이터 내용 확인 → 데이터 내용 출력 버전을 Raw로 변경  → 해당 2진수 데이터를 notepad에 복사  → 해당 메모장의 확장자 변경

 이렇게 통신 내용을 확인 할 수 있으며, 통신내용 중에 파일이 있으면, 해당 파일을 내용을 빼올 수 있다. 그래서 파일의 암호화가 중요한 것이다. 

'정보보안' 카테고리의 다른 글

파일 내용 출력 및 파일 내용 편집  (0) 2023.06.07
리눅스 싱글 부트와 기본 명령어  (0) 2023.06.05
리눅스와 가상 머신  (1) 2023.06.02
OSI 7계층과 장비  (1) 2023.05.31
네트워크와 IP 주소  (0) 2023.05.30
Comments