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를 이용해서 캡쳐 후 분석해보기
'네트워크 기초' 카테고리의 다른 글
11. www(웹)를 이용할 때는 이렇게 데이터를 주고받는다 (2) | 2021.07.30 |
---|---|
10. NAT와 포트 포워딩 (0) | 2021.07.30 |
08. 비연결지향형 UDP 프로토콜 (0) | 2021.07.30 |
07. 컴퓨터의 프로그램끼리는 이렇게 데이터를 주고 받는다 (0) | 2021.07.30 |
06. 멀리 있는 컴퓨터끼리는 이렇게 데이터를 주고받는다 (0) | 2021.07.30 |