네트워크 기초

09. 연결지향형 TCP 프로토콜

따라학잇 2021. 7. 30. 17:28

 

 

 

 

 

TCP

연결 지향형 프로토콜, 신뢰성 있는 통신이 가능하게 해준다. 계속해서 물어보고 대답하는 과정을 통해서 신뢰성을 보장하고 서버와 클라이언트 사이의 통신을 동기화

TCP 프로토콜 구조

출발지 포트 목적지 포트 Seq 번호 : TCP 패킷의 순서 번호 Ack 번호 : Seq 번호에 대한 응답 번호 오프셋 : 헤더의 길이, IP 헤더의 길이와 성격이 비슷, 최대 15, Offset * 4 = 실제 헤더의 크기 Reserved : 예약된 필드로써 사용하지 않는 곳 TCP Flags : 현재 패킷의 종류를 표시 URG : 긴급 bit, 우선순위가 높은 데이터를 포함한 패킷 ACK : 승인 bit, 승인의 뜻을 포함한 패킷 PSH : 밀어넣기 bit, TCP Buffer가 일정한 크기만큼 쌓여야 패킷을 추가 전송하는데 이를 생략하고 계속 데이터를 전송하게 함 RST : 초기화 bit, 데이터를 주고받는 거에 문제가 발생했으니 서로의 연결을 초기화하겠다는 패킷 SYN : 동기화 bit, Seq 번호를 동기화하고 연결 수립을 요청한다는 패킷 FIN : 종료 bit, 서버와 클라이언트가 연결을 종료하겠다는 패킷 Window : 남은 버퍼의 크기를 상대방에게 미리 알려주는 기능 체크썸 : 헤더의 오류를 확인하기 위한 값 Urgent Pointer: 어디가 긴급 데이터인지를 가리키는 곳


TCP 상태 천이도


TCP 3 Way Handshake


클라이언트 서버 | | | | | | Listening | | SYN_SENT|-------SYN------>| (1) | S:100 A:0 | SYN_RECEIVED |<---SYN + ACK----| (2) | S:2000 A:101 | |-------ACK------>| ESTABLISHED | S:101 A:2001 | (3) | | | | *tip : 네트워크 보안에서 SYN Flooding, 포트스캔(TCP Connect Scan, Half Scan), TCP Session Hijacking 과 관련이 있음 (1) Seq번호 : 처음 패킷을 보낼 때는 랜덤한 값 Ack번호 : 처음 패킷을 보낼 때의 Ack번호는 0 (2) Seq번호 : 두번째부터는 받은 ACK 번호 Ack번호 : 두번째부터는 받은 Seq번호 + 1 (3) Seq번호 : 받은 Ack번호 Ack번호 : 받은 Seq번호 + 1




실습 1 - TCP 3Way Handshake 과정 계산해보기


TCP 3 Way Handshake 과정을 Wireshark를 이용해서 캡쳐 후 분석해보기


실습 2 - TCP 프로토콜 분석하기


TCP를 이용한 통신과정을 Wireshark를 이용해서 캡쳐 후 분석해보기

반응형