TCP flow control
네트워크 레이어가 전달하는 데이터가 애플리케이션 레이어가 소켓 버퍼에서 삭제하는 데이터보다 빠르면 어떻게 될까?
- 이때 필요한게 flow control, receiver의 버퍼가 너무 많고 빠른 전송에 오버플로우되지 않도록, receiver는 sender를 컨트롤한다.
TCP receiver는 TCP header의 rwnd field로써 버퍼에 빈자리가 있다고 advertises한다. - 많은 OS에서 RcvBuffer를 자동조정(autoadjust)
sender는 rwnd가 도착할때까지 unACKed data의 크기를 제한한다.
guarantees(보장된) receive buffer는 overflow되지 않을 것이다.
TCP connection management - accept
데이터를 교환하기 전에, sender와 receiver는 handshake를 한다.
연결을 설립(establish)하는 것에 동의하고, 파라미터를 합의한다.
TCP 2-way handshake
2-way handshake가 실패하는 경우 : variable delay, 메시지재전송, 메시지 순서바뀜, 상대방을 보지 못하는 경우
TCP 3-way handshake
클라이언트가 connect 요청으로 무작위 시퀀스 넘버을 SYN 패킷에 넣어서 보낸다.
서버가 요청을 받으면 시퀀스 번호(무작위)와 ACK(받은 시퀀스넘버 + 크기)를 정해서 SYN/ACK 패킷에 보낸다.
클라이언트는 받은 시퀀스 넘버에 대하여 서버에 ACK 패킷을 보냄으로 연결이 완료된다.
종료될 때는,
클라이언트는 크기 1비트의 FIN을 보낸다.
서버는 ACK 패킷을 보내서 수신이 성공했음을 알리고, FIN 패킷을 보낸다.
클라이언트는 FIN 패킷에 대한 ACK패킷을 보내면, 서버는 연결을 끊고 클라이언트는 잠시 대기 후 연결을 끊는다.
'학교강의필기장 > 컴퓨터네트워크' 카테고리의 다른 글
컴퓨터네트워크[16]: congestion control (0) | 2023.04.26 |
---|---|
컴퓨터네트워크[15]: Principles of congestion control (0) | 2023.04.25 |
컴퓨터네트워크[13]: Connection-oriented transport: TCP (0) | 2023.04.20 |
컴퓨터네트워크[12]: Principles of reliable data transfer (0) | 2023.04.20 |
컴퓨터네트워크[11]: Connectionless transport: UDP (0) | 2023.04.19 |