티스토리 뷰

  • 애플리케이션 계층에 데이터를 분류하여 전달하는 역할을 한다.
  • 트랜스포트 계층은 TCP 또는 UDP 프로토콜을 대표적으로 사용한다
  • 어떤 프로토콜을 사용할 것인가에 따라 헤더의 내용(정보)이 다르다.
  • 포트를 가지고 논리적으로 구분을 한다.

TCP

  • TCP 프로토콜은 연결의 신뢰성을 보장한다.
  • TCP 헤더에 포함되는 내용들 (pg113)
    • 송수신처 포트번호
    • 시퀀스번호(송신 데이터의 일련번호)
    • ack 번호(수신 데이터의 일련번호)
    • 데이터 오프셋
    • 컨트롤비트
    • 윈도우
    • 체크섬 

3 handshake

  • syn, ack 컨트롤비트로 3 handshake를 하여 연결을 확인한다.
  • syn ack ack 으로 이루어진다.
  • syn, ack 이 모두 1로 체크되어 있어야 연결을 확인했음을 인지하고, 데이터 송수신을 한다.

4 handshake

  • 연결을 끊을 때는 4 handshake를 한다.
  • fin ack+fin ack 으로 이루어진다. ack 을 받지 못하면 요청한 데이터가 유실되었을 것으로 판단해 다시 fin 요청을 보낸다.
  • 하지만 바로 소켓이 말소되면 소켓에 있던 port 정보가 어떤 것인지 몰라 fin 요청의 보낼 소켓을 알 수 없다. 또한, 그 사이에 같은 port번호에 다른 연결이 맺어진다면 그 소켓은 생성되자마자 종료 신호를 받게 될 것이다.
  • 연결을 끊을 때, 일정 시간 동안 연결 종료에 대한 문제점을 방지하는 것이 TIME_WAIT 의 목적이다. 패킷 유실에 따른 비정상적인 통신 흐름의 발생을 막는 것이다.

시퀀스 번호

  • 난수 기반의 시퀀스 번호를 같이 보낸다.
  • 시퀀스 번호의 초기값을 공유한다.
  • 시퀀스번호 + 데이터 , ack 번호 를 주고받아 데이터가 정상 수신되었는지, 순서가 맞는지를 확인한다.
  • 오류 발생시 회복처리(다시 보내기)가 가능하다.
  • ack 번호가 돌아오는 시간의 평균값으로 대기시간을 산정한다. 이것을 타임아웃 값이라고 한다.
  • 타임아웃 값 안에 수신이 확인이 안 되면 다시 패킷을 보낸다.
  • 타임아웃 값은 동적으로 변화한다.

윈도우 필드

  • 수신 버퍼의 크기를 송신측에 알려 해당 버퍼 크기만큼만 연속적으로 보내도록 한다.
  • 수신 가능한 데이터 양의 최대값을 윈도우 사이즈라고 한다.

참고

- [책] 성공과 실패를 결정하는 1%의 네트워크 원리

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함