300x250
12. TCP: 전송 제어 프로토콜

contents
1.개요
2.TCP 소개
3.TCP 헤더와 캡슐화

4.정리


1. 개요

TCP

연결 지향의 신뢰성 있는 바이트 스트림을 제공
UDP와 같은 네트워크 계층을 이용

연결지향
TCP를 이용하는 2개의 애플리케이션이 데이터를 교환하기 전에 TCP 연결을 확립함을 의미

통신 문제 해결 방법
부호이론
정보를 전달할 때에 효율을 높이기 위해 또는 정보의 보호를 위하여 부호로 바꾸어 전달하는 것을 연구.
오류정정코드
일부 비트에 피해가 발생 하더라도 실제 정보를 추출할 수 있는 여분의 비트를 추가

전송을 반복해서 시도
ARQ(Automatic Repeat reQuest, 자동 반복 요구)


재전송 : 비트 오류를 다루기 위한 방법 중 하나
재전송을 위해 다음이 필요함 :
수신자가 패킷을 수신했는지 여부
수신한 패킷이 동일한지 여부

수신자는 패킷을 수신 했을 때 ACK를 전송 함

송신자가 ACK를 받으면 다음 패킷을 보냄
Question
Q1. 송신자가 ACK를 얼만큼 기다릴 것인가? (14)
Q2. ACK가 분실된다면 무슨 일이 발생하는가?(다음)
Q3. 패킷을 수신했으나 오류가 있을 경우?(다음)

Q2. ACK가 분실된다면 무슨 일이 발생하는가?
송신측은 패킷이 폐기된 경우와 구분하기 어려움.
송신기는 패킷을 재전송 함.

Q3. 패킷을 수신했으나 오류가 있을 경우?
패킷의 오류검출을 위해 CRC를 사용함.
오류가 포함 되어 있다면 ACK 전송을 억제함.
송신기는 패킷을 재전송 하게 됨.

문제점
(1) 여러 가지 이유로 인해 패킷의 사본을 중복 수신할 가능성.
(2) 송신자는 ACK 대기 시간동안 아무것도 하지 못함.

해결책
(1) 순서번호(sequence number)를 이용함.
(2) 패킷의 윈도우와 슬라이딩 윈도우



송신측
어떤 패킷이 해제 됐는지
어떤 패킷이 ACK를 기다리는지
어떤 패킷이 아직 전송되지 않았는지

수신측
어떤 패킷이 수신되고 응답했는지
어떤 패킷이 기대되는지
어떤 패킷이 제한된 메모리로 인해 유지 되지 못하는지

문제점
얼마나 큰 윈도우를 사용해야 하는가? => 흐름제어로 해결
수신기와 네트워크가 송신기의 데이터 전송률을 처리하지 못한다면 어떤 일이 발생 하는가? =>흐름제어와 혼잡제어

흐름 제어
송신기의 속도를 강제로 늦추는 방법
(1) 전송률 기반
송신기에 전송률을 할당하고 그것을 초과해 전송하지 못하게 보장 함
(2) 윈도우 기반
슬라이딩 윈도우 사용시 많이 사용됨
윈도우 크기를 시간에 따라 변화하도록 함
윈도우 광고를 사용 함.
수신기가 송신기에게 얼마나 큰 윈도우를 사용할 수 있는지 전달하는 방법

문제점
송신기와 수신기 사이 네트워크에서는 효율적이지 못함
송신기의 전송률이 라우터의 능력을 초과할 가능성이 있음
혼잡 제어가 필요


혼잡 제어
송신기가 네트워크를 압도하지 못하게 천천히 하는 것

16장에서 다룸.



2. TCP 소개

신뢰성 제공을 위해
순서번호
패킷의 처음 바이트에 대한 오프셋 바이트
가변크기 허용과 재 패킷화에 사용 됨
순서번호를 사용하면 중복 세그먼트를 폐기하고 세그먼트의 순서를 조정할 수 있음.


체크섬
TCP 헤더와 데이터, IP 헤더로부터 체크섬을 계산함.

정확하지 않은 체크섬을 가지고 도착하면 그 패킷을 폐기하고 ACK를 보내지 않음.

신뢰성 제공을 위해
타이머
TCP는 세그먼트 그룹을 전송 할 때 재전송 타이머를 설정함.
시간 내에 ACK가 수신되지 않으면 세그먼트를 재전송 함.
자세한 내용은 14(TCP 타임아웃과 재전송).



3. TCP 헤더와 캡슐화


4. 정리

TCP
신뢰성 있음
연결 지향
바이트 스트림의 전송계층 서비스

오류를 다루기 위한 방법
오류정정코드 추가
데이터 재전송
타이머를 설정하여 처리
패킷 순서 번호 표시

데이터 전송 효율
슬라이딩 윈도우를 사용하여 높임.




반응형

+ Recent posts