- 9. 연결지향형 TCP 프로토콜2023년 02월 05일 23시 04분 26초에 업로드 된 글입니다.작성자: 각수짱728x90반응형SMALL
TCP 프로토콜
TCP가 하는 일전송
전송 제어 프로토콜(Transmission Control Protocol, TCP)은 인터넷에 연결된 컴퓨터에서 실행되는 프로그램 간에 통신을 안정적으로, 순서대로, 에러 없이 교환할 수 있게 한다.
TCP의 안정성을 필요로 하지 않는 애플리케이션의 경우 일반적으로 TCP 대신 비접속형 사용자 데이터그램 프로토콜(User Datagram Protocol)을 사용한다.
TCP는 UDP보다 안전하지만 느리다.
연결 지향형 프로토콜, 신뢰성 있는 통신이 가능하게 해 준다. 계속해서 물어보고 대답하는 과정을 통해서 신뢰성을 보장하고 서버와 클라이언트 사이의 통신을 동기화한다.
TCP 프로토콜의 구조
출발지 포트
목적지 포트
Seq 번호 : TCP 패킷의 순서 번호
Ack 번호 : Seq 번호에 대한 응답 번호
오프셋 : 헤더의 길이, IP 헤더의 길이와 성격이 비슷, 최대 15, offset * 4 = 실제 헤더의 크기
Reserved : 예약된 필드로써 사용하지 않는 곳
TCP Flages : 현재 패킷의 종류를 표시
Window
체크썸 : 헤더의 오류를 확인하기 위한 값
Urgent Pointer : 어디가 긴급 데이터인지를 가리키는 곳
TCP 플래그
TCP 플래그의 종류
URG : 긴급 bit, 우선순위가 높은 데이터를 포함한 패킷
ACK : 승인 bit, 승인의 뜻을 포함한 패킷
PSH : 밀어넣기 bit, TCP Buffer가 일정한 크기만큼 쌓여야 패킷을 추가 전송하는데 이를 생략하고 계속 데이터를 전송하게 함
RST : 초기화 bit, 데이터를 주고받는 거에 문제가 발생했으니 서로의 연결을 초기화하겠다는 패킷\
SYN : 동기화 bit, Seq 번호를 동기화하고 연결 수립을 요청한다는 패킷
FIN : 종료 bit, 서버와 클라이언트가 연결을 종료하겠다는 패킷
TCP를 이용한 통신과정
연결 수립 과정
TCP를 이용한 데이터 통신을 할 때 프로세스와 프로세스를 연결하기 위해 가장 먼저 수행되는 과정
- 클라이언트가 서버에게 요청 패킷을 보내고
- 서버가 클라이언트의 요청을 받아들이는 패킷을 보내고
- 클라이언트는 이를 최종적으로 수락하는 패킷을 보낸다.
위의 3개의 과정을 3 Way Handshake라고 부른다.
*tip : SYN Flooding, 포트스캔(TCP Connect Scan, Half Scan), TCP Session Hijacking)
데이터 송수신 과정
TCP를 이용한 데이터 통신을 할 때 단순히 TCP 패킷만을 캡슐화해서 통신하는 것이 아닌 페이로드를 포함한 패킷을 주고받을 때의 일정한 규칙
- 보낸 쪽에서 또 보낼 때는 SEQ번호와 ACK번호가 그대로다.
- 받는 쪽에서 SEQ번호는 받은 ACK번호가 된다.
- 받는 쪽에서 ACK번호는 받은 SEQ번호 + 데이터의 크기
번외
NC를 이용한 데이터 송수신 패킷 캡처
서버(가상머신 1)
netcat 압축파일을 c드라이브에 압축 풀고
cmd 실행
C:\Users\user>cd /
C:\>cd netcat-1.11
C:\netcat-1.11>nc.exe -l -p 12345
클라이언트(가상머신 2)
netcat 압축파일을 c드라이브에 압축 풀고
cmd 실행
cd /
cd netcat-1.11
nc.exe [가상머신 1 IP] [가상머신 1 포트]TCP 연결 종료 과정
TCP PSH Flag와 TCP Buffer 설명
728x90반응형LIST'네트워크 기초' 카테고리의 다른 글
11. 7계층 프로토콜 HTTP (0) 2023.02.06 10. NAT와 포트포워딩 (0) 2023.02.06 8. 비연결지향형 UDP 프로토콜 (0) 2023.02.03 7. 컴퓨터의 프로그램끼리는 이렇게 데이터를 주고 받는다 (0) 2023.02.03 6. 멀리 있는 컴퓨터끼리는 이렇게 데이터를 주고받는다. (0) 2023.02.02 이전글이 없습니다.댓글