연결 지향형 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 |