카테고리 없음
TCP
내이름효주
2024. 8. 26. 15:40
- TCP(Transmission Control Protocol) - 전송 제어 프로토콜
- TCP Header
- Source port: 송신측 포트번호
- Destination port: 수신측 포트번호
- Sequence number: 전송하는 데이터의 순서 > 수신자가 쪼개진 세그먼트의 순서를 파악해 순서 및 도착 보장
- Acknoledgment number: 다음에 받을 것으로 예상되는 시퀀스 번호를 의미, 응답번호
- three-way handshake: TCP/IP 프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정
- SYN > SYN + ACK > ACK
- SYN: 통신 가능한지 확인
- SYN + ACK: 통신 준비 알림
- ACK: 전송 시작
- SYN > SYN + ACK > ACK
- 연결 종료 three-way handshake
- FIN > FIN + ACK > ACK
- FIN: 연결 종료 요청
- FIN + ACK: 연결 종료 요청 승낙(응답), 연결 종료 요청
- ACK: 응답
- FIN > FIN + ACK > ACK
- Client 입장
- 연결 요청을 위해 SYN을 보내고 SYN + ACK을 기다리는 시간 SYN-SENT
- 서버로부터 ACK이 오면 ESTABLISHED 상태
- 연결 종료를 위해 FIN을 보내고 ACK을 기다리는 시간을 FIN-WAIT-1, (4-way handshake를 통해 연결 종료)Server로부터 ACK이 오고 다음의 FIN을 기다리는 시간을 FIN-WAIT-2
- 서버로부터 FIN이 오면 ACK을 보낸 후 TIME-WAIT에 돌입하고 2MSL 시간동안 대기한 후 Closed
- Server 입장
- 서버가 클라이언트로부터 SYN을 받기 위해 연결을 준비하는 과정 LISTEN
- 클라이언트로부터 SYN이 오면 SYN + ACK을 보내고 응답을 기다리는 시간을 SYN-RCVD
- 클라이언트로부터 SYN에 대한 ACK이 오면 ESTABLISHED에 돌입
- 연결 종료를 위해 클라이언트로부터 FIN을 받으면 ACK을 보내고 남은 Data를 보내기 위해 연결을 유지하는 시간을 CLOSE-WAIT라고 함(4-way handshake)
- 연결 종료를 위해 클라이언트로부터 FIN을 받고 CLOSE-WAIT에 돌입한 후, 마지막에 FIN-ACK을 보내기도 함( 3-way handshake )
- 연결 종료를 위해 클라이언트에게 FIN을 보내면 LAST ACK상태가 되는데 말 그대로 마지막 ACK을 위해 대기하는 시간, ACK를 받으면 CLOSED상태가 됨