-
∙TCP 통신
∘신뢰성을 보장하는 통신 프로토콜
-서버:socket() -> bind() -> listen() -> accept() -> read/writhe() -> close()
(소켓생성) (소켓주소할당) (연결요청대기) (연결허용) (데이터송수신) (연결종료)
-클라이언트:socket() -> connect() -> read/write() -> close()
(소켓생성) (연결요청) (데이터송수신) (연결종료)
➀LINK 계층: 물리적인 영역의 표준화
➁IP 계층: 경로를 검색
➂TCP/UDP 계층: 데이터의 실제 송수신을 담당
➃애플리케이션 계층: 응용 서비스 수행
∙흐름제어
∘수신측의 저장 용량 초과로 발생하는 데이터 손실을 줄이기 위해 송신 데이터 전송량을 조절하는 기법
○Stop and Wait
-매번 전송한 패킷에 대해 확인 응답을 받고 그 다음 패킷을 전송하는 방법
○Sliding Window
-수신측에서 설정한 윈도우 크기만큼 송신측에서 확인 응답 없이 세그먼트를 전송하는 방법
-3 way handshaking을 통해 수신 호스트의 receive window size에 자신의 send window size
를 맞춘다.
-먼저 윈도우에 포함되는 모든 패킷을 전송하고, 전달이 확인되면 윈도우를 옆으로 옮겨 그
다음 패킷전송
∙혼잡제어
∘네트워크의 혼잡을 피하기 위해 송신측에서 보내는 데이터 전송량을 제어하는 기법
-만약 한 라우터에 데이터가 몰릴 경우 데이터를 전부 다 처리할 수는 없게 되어 버리게 된다.
-이런 경우 호스트들은 신뢰성 보장을 위해 또 다시 재전송하게 되고 혼잡이 가중된다.
-혼잡제어는 호스트와 라우터를 포함한 보다 넓은 관점에서 전송 문제를 다룬다.
○Slow Start (느린 시작)
-처음에 패킷을 하나씩 보내고 문제없이 도착하면 window 크기를 2배씩 증가시키며 전송한다.
-혼잡 현상이 발생하면 window size를 1로 떨어뜨린다.
-window size의 절반까지는 2배씩 증가시키고 이후에는 1씩 증가시킨다.
○AIMD(Additive Increase/Multiplicative Decrease)
-처음에 패킷을 하나씩 보내고 문제없이 도착하면 window 크기를 1씩 증가시켜가며 전송하는 것
-패킷 전송에 실패하거나 일정 시간을 넘기면 패킷의 보내는 속도를 절반으로 줄인다.
-나중에 진입하는 호스트가 처음에는 불리하지만, 시간이 흐르면 공평한 상태로 수렴한다.
-네크워크의 높은 대역폭을 사용하지 못하고, 오랜 시간이 걸리며, 네트워크 혼잡을 미리
감지하지 못한다.
○Fast Retransmit (빠른 재전송)
-송신측에서 여러 개의 세그먼트를 전송하는 데 중간에 손실된 경우, 수신측에서 손실된 ACK
를 계속 보낸다. (신뢰성 보장을 위해 연속해서 받은 마지막 패킷 ACK을 전송)
-타임아웃 전에 중복 ACK를 3번 받게 되면 해당 세그먼트를 즉시 전송한다.
-혼잡을 감지하고 window size를 줄인다.
○Fast Recovery (빠른 회복)
-혼잡이 감지되면 window size를 반으로 줄이고 선형적으로 증가시키는 방법이다.
-Time out이 발생하면 window size를 1로 줄이고 slow start를 한다.
출처
'Computer Science > Network' 카테고리의 다른 글
6.HTTP(HyperText Transfer Protocol), HTTPS(HyperText Transfer Protocol Secure) (0) 2021.09.07 5.대칭키(Symmertric Key), 공개키(Public Key) (0) 2021.09.06 4.UDP(User Datagram Protocal) (0) 2021.09.04 2.TCP 3 way handshake, 4 way handshake (0) 2021.09.02 1.OSI(Open System Interconnection) 7계층 (0) 2021.09.01