내이름효주 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: 전송 시작
  • 연결 종료 three-way handshake
     
    • 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상태가 됨