[네트워크] 전송 계층 - TCP(2)

장현수·2023년 6월 12일
0

네트워크

목록 보기
6/11

현실적인 TCP의 동작

pipelined protocols

  • 파이프라인 방식
  • 한꺼번에 많은 패킷을 보내고 처리하는 프로토콜

TCP

point to point

  • 소켓과 소켓 사이의 연결, 한 쌍의 TCP

reliable, in order byte stream

  • 소실 없이 전달
  • 메세지가 내려온 순서대로 전달된다

pipelined

  • 한꺼번에 많은 메세지가 전달될 수 있음

full duplex data

  • 각 소켓의 역할이 sender 또는 receiver 하나로 정해져있는게 아니라, 양쪽 모두 sender이자 receiver

connection oriented

  • 연결이 맺어짐

flow controlled

  • 리시버의 처리속도에 맞게 TCP에서 전송해줘야 함

TCP seq, numbers, ACKS

sequence number

  • 바이트 단위로 시퀀스 넘버를 붙임
  • 각 세그먼트의 데이터의 바이트의 첫 번째 시퀀스 넘버가 대표 시퀀스 넘버

acknowledgements

  • ACK #100 : 99번 시퀀스까지 잘 받았고 100번을 기다린다는 의미

TCP round trip time, time out

  • rtt를 세그먼트를 매번 보낼 때 측정. 세그먼트가 나갈 때부터 그것에 대한 피드백이 돌아올 때까지 걸리는 시간 → 변화무쌍함
  • 다양한 rtt를 그대로 적용시킬 수 없기 때문에 가장 최근의 rtt에 가중치를 두고 평균치를 계산하여 적용

TCP reliable data transfer

  • 한 쌍의 소켓 연결이 생기면 각 소켓의 tcp에 두 개의 버퍼가 생김 - send buffer, recieve buffer
  • send buffer : tcp가 전송하는 속도, 애플리케이션 프로세스의 전송 속도가 다름. 그 간극을 조절하기 위해 존재.
  • recieve buffer : in-order delivery 하기 위해 존재

Fast retransmit

  • timeout보다 패킷 유실을 빨리 알아차릴 수 있는 방법
  • RTT + margin의 시간동안 응답이 오지 않으면 timeout 처리. 시간의 길이가 긴 편이라 그동안 들어오는 segment들이 receiver buffer에 쌓이게 됨
  • ACK 넘버가 계속 같은 것을 반복할 때 패킷 유실의 징후를 알아차릴 수 있음. 같이 ACK 넘버를 4번 받았을 때 유실로 판단
  • timeout보다 빠르게 작동하는 재전송
profile
개같이 발전하자 개발

0개의 댓글