[컴퓨터네트워크] 전송계층 2

백은진·2021년 4월 13일
0

강의

목록 보기
3/7
post-custom-banner

복습

  • reliable transport network( - TCP)를 사용하기 위해서는 pipeline 방식의 protocol을 사용해야 한다.
  • pipeline 방식을 사용하기 위해서는 GNB 방식 혹은 selective repeat 방식을 사용할 수 있다.

본 학습

  • TCP: Overview

    • point-to-point

      • one sender, one receiver
    • reliable, in-order byte stream:

      • no "message boundaries"
    • pipelined:

      • TCP congestion adn flow control set window size
    • send & receive buffers

    • full duplex data:

      • bi-directional data flow in same connection
      • MSS: maximum segment size
    • connection-oriented:

      • handshaking (exchange of control masseges) initial's sender, receiver state before data exchange
    • flow controlled:

      • sender will not overwhelm receiver
  • point-to-point

    • 소켓 한 쌍끼리 통신을 책임짐.
    • 프로세스 하나에 소켓을 여러 개를 둘 수 있고, 한 프로세스의 소켓 하나가 다른 한 프로세스의 소켓과 연결되면 소켓 한 쌍이 만들어지는데, 이 소켓(point) 한 쌍끼리 통신을 책임지게 한다.
  • reliable, in-order byte stream:

    • 하나의 패킷씩 전송함
  • pipelined:

    • 여러 개의 패킷을 한 번에 전송함
  • send & receive buffers

    • 버퍼가 필요한 이유: sender는 재전송하기 위해서, receiver는 out-of-order-packets을 저장하기 위해서
  • full duplex data:

    • 양방향 데이터 전송
  • connection-oriented:

    • sender buffer는 receiver buffer로, receiver buffer는 sender buffer로 패킷을 전송한다.
  • flow controlled:

    • receiver buffer가 수용 가능한 만큼 sender가 패킷을 전송함
  • TCP segment structure

    • 용어

      • sequence number
        • TCP에서 사용하는 sequence number는 데이터 부분의 첫 바이트의 순서 번호이다.
        • GNB에서 ACK(10)은 10번까지 잘 받았다는 의미이고, TCP에서 ACK(10)은 10번 전까지 잘 받았으니 이제 10번을 기다리겠다는 의미이다.
        • 이론상으로 하나의 애플리케이션에서 분별할 수 있는 sequence number는 0~ 2 16 -1 이다.
      • checksum: for error dectection (해당 segment가 network를 거쳐 오면서 에러가 있었는지 없었는지 확인하기 위한 용도)
      • receive window: 현재 내 윈도우에 남은 buffer 공간이 얼마나 되는지 알려주는 용도
    • '데이터를 받았을 때 500 ms 정도 기다린 후 ACK를 보내라'는 권고사항이 있다. TCP에 sender와 receiver가 함께 있기 때문에 send 동작을 할 때 ACK도 함께 보내면 데이터전송량이 줄고, pipeline 방식으로 데이터가 연달아 전송될 때 마지막 데이터에 대한 ACK 1개만 보낼 수도 있기 때문에 비용면에서 효율적이기 때문이다.

    • timeout = RTT

      • segment가 A에서 B로, 다시 A로 도착하는 시간을 RTT라고 한다. 이 RTT를 timeout 으로 정하자는 의견이 나타났다. 그러나, 아주 조금의 환경 차이에도 격차가 크기 때문에 시간을 보정하는 식의 적용이 필요하다.

  • TCP reliable data transfer

    • pipeline 방식 사용

    • cumulative acks ("ACK(10)"의 의미가 "9번까지 잘 받았으니, 10번을 기다린다"는 뜻)

    • timer 1개 사용 (GBN과 비슷함)

    • 복습


  • (중요) TCP: retransmission scenarios

  • fast retransmit

    • receive buffer가 1~100의 segments를 전송받고 있다고 가정할 때 만약 10번만 유실되었다면, ACK(10)이라는 특정 피드백을 반복하여 줄 것이다. 이를 통해 pipeline 전송이 100번까지 모두 끝나기 전에도, sender는 특정 segment가 유실되었음을 알 수 있다.
profile
💡 Software Engineer - F.E
post-custom-banner

0개의 댓글