연결 지향형 TCP 프로토콜 

 

마지막에 TCP Option 은 IP 프로토콜 마지막에 option 붙은거 처럼 optional 하고 일반적으로 TCP 는 20Byte 인데 최대 60Byte 까지 늘어날 수 있다. 

 

Offset : 여기서 Offset 은 offset 이라기보다 헤더의 길이를 뜻한다. ( 여기도 IP처럼 4로 나눠서 적는다. )

Reserver : 예약된 필드로 사용하지 않는 필드이다

Window : 얼마만큼 더 보내~ 할 때 사용하는 필드.

 

 

 

Flag : TCP 가 계속해서 상대방과 연결 상태를 확인하는데, 그 때 나타내는 값이 Flag 이다.

- U 부분이 1 로 세팅 되어 있으면 : Urgent ( 긴급하다 ) 라는 뜻 (중요하다 ) 뒤에 나오는 Urgent Pointer 는 어디서부터 중요한 데이터인지 나태내는 값이다. ( 잘 몰라도 된다.)

 

A : ACK 

 

P : Push , 밀어 넣기 비트 라고 해서 TCP Buffer 가 일정 크기만큼 쌓여야지 패킷을 전송하는데, 크기 상관 없이 계속 전송하겠다 라는 뜻. ( 중요하지 않음 )

 

- Reset : 일단 연결이 되어있는 상태에서 추가적으로 데이터를 주고 받을때 문제가 생기면 

 

- Sync : Sync 비트 라고 해서 동기화 비트이며, 상대방과 연결을 시작할 때 무조건 사용되는 비트 ( 가장 중요한 플래그 )

 

- FIN : 연결을 끊을때 사용 하는 플래그

 

 


 

[ 3 Way Handshake ]

 

 

- 출발지 포트번호는 사용자 포트번호 중에 사용가능한 포트 사용하고,

- 목적지 포트번호는 64(Hex) = 100(Dec)

 

- seq 번호

- ack 번호 

 

- offset : 헤더 길이  / 4

- reserved : 사용안함

- flag : Sync 플래그 켜져있음

- window 

 

디캡슐레이션으로 내 port 번호로 오는거 확인하고, flag 값으로 나한테 연결 요청하는거구나 알아 차리고 

 

답장을 써서 준다.

 

 

 

여기서 알아야될 점 은 ( 네트워크 보안쪽 까지도 알기 위해서는 )

 

이 Seq 랑 Ack 를 계산할 줄 알아야한다.

 

 

이게 왜 보안에서 쓰이냐면 중간에 이 번호를 하이재킹해서 해킹을 할 수 있다.

 


 

연결이 수립된 다음에 이제 데이터를 주고 받는데

 

데이터를 주고 받을때도 Seq , ACK  번호를 그대로 이어간다. 

 

근데 이제는 데이터를 주고 받기 때문에 헤더 뒤에 데이터(페이로드) 가 있다.

 

그냥 Seq + 1 이 아니라 , Seq + data 크기 이다. 

 

 

1. 3 way handShake 가 끝나고 연결이 수립된 다음에 다시 클라이언트가 서버한테 패킷을 보낼때는 SYN 번호와 ACK 번호 그대로 사용 

 

시퀀스랑 Ack 번호 보면 아까 그대로인것을 볼 수 있다. ( 1 번 규칙)

 

 

서버에서 다시 클라이언트한테 보낼때는 서버가 받은 (클라이언트에서 보낸) 데이터 크기인 100을 더해서 ACK 번호를 설정한다. 

 

 

 

 


 

[ TCP 의 연결 상태 변화 ] 

 

 

 


[ WireShark 실습 ]

 

인터넷에서 아무 사이트나 방문하고

TCP 캡쳐를 해보자

 

TCP 패킷이 워낙 캡쳐가 많이 되다 보니깐 너무 많다.

 

이걸 쉽게 볼 수 있는 wireShark의 기능을 이용해보자. 

 

TCP 아무거나 하나 골라서  TCP Stream을 봐보자.

 

TCP는 서로 통신을 확인한다고 했다( 동기화?)

 

그 내역만 빼서 보겠다는거다.

이런 창이 뜰건데 일단 닫고 맨 위에를 보자

 

3way handshake가 있다

 

 

그리고 TCP 를 보기 쉽게 하는 기능도 있다.

 

Flow Graph 를 보면은 

 

전체 TCP 그래프가 플로우 형식으로 나오는데 처음에는 필터가 걸리지 않은 전체 TCP 통신이 나타난다. 

 

아래 보면은 Limit to display filter 가 있는데 우리가 TCP stream 으로 보고 있는 tcp 통신만 볼 수 있다. 

 

 

보면은 처음 seq 번호가 0으로 나오는데 이건 wire shark 가 우리 보고 편하라고 상대적인 값으로 계산해준것이다. 

 

실제 보면은 아래와 같이 복잡한 수인데 0이라고 계산해서 해준거다. ( 원래는 랜덤한 값 ) 

설정 들어가서 seq 번호 원래대로 나오게 하면은  아래처럼 나온다.

 

'네트워크 > Network 실습' 카테고리의 다른 글

10. NAT , Port Forwarding  (0) 2022.07.01
08. UDP 프로토콜  (0) 2022.05.28
07. Client - Server 개념  (0) 2022.05.25
06. IPv4 의 조각화 ∨  (0) 2022.05.24
06. 라우팅 테이블 및 전송 과정 ∨  (0) 2022.05.24

+ Recent posts