- 재전송 타이머 값이 종종 상대적으로 길어지므로, 손실된 패킷의 재전송 전에 지연시간이 커진다.
- 위의 상항을 해결하고자 중복 ACKs를 통해 손실된 세그먼트를 검출한다.
- 송신측에서 바로바로 여러 개의 세그먼트를 전송할 경우, 세그먼트가 손실되면 수신측에서는 중복 ACK를 보내게 되는데, 타임아웃 전에 송신측에서 중복 ACK를 3번받게 되면 세그먼트를 즉시 전송한다.즉, 수신측이 기다리는 순서번호의 세그먼트보다 큰 순서번호의 세그먼트가 3개 도착할 경우를 의미한다.
- 점대점(Point-to-Point) : 단일 송/수신자간의 통신 ex) 일대일 통신, Unicast 전송
Unicast : 고유 주소로 식별된 하나의 네트워크 목적지에 메시지를 전송하는 방식
Broadcast : 송신 가능한 모든 목적지에 동일한 데이터를 전송
Multicast : 특별한 주소 지정 방식을 통해 정해진 여러 목적지로 데이터를 전송
호스트가 무수히 많은 경우, Unicast로 데이터를 전송하면, 각각의 네트워크 연결마다 호스트의 컴퓨팅 리소스(자원)을 소비할 뿐 아니라 각각 다른 네트워크 대역폭을 필요로 하기 때문에 전송 비용이 많이 든다는 단점이 있다.
- 파이프라인(Pipeline) : TCP의 혼잡 제어 및 흐름 제어가 윈도우 크기(Window size)를 결정한다.
Window size : ACK받지 않은 데이터 중 최대 송신가능한 바이트 수, 수신자가 한 번에 버퍼링할 수 있는 최대 데이터 크기
Sliding Window: 두 개의 네트워크 호스트 간의 패킷의 흐름을 제어하기 위한 방법으로, TCP 프로토콜은 데이터의 전달을 보증해야 하므로 패킷 하나 하나가 정상적으로 전달되었음을 알리는 확인 신호(Acknowledgement, ACK)를 수신자가 송신자에게 보내야 한다.
패킷에 오류가 생겼을 경우, 송신측에서 해당 패킷을 재전송해야 하는데 이 때 Sliding Window가 Window Size(메모리 버퍼의 일정 영역)에 포함되는 모든 패킷을 전송하고, 패킷의 전달이 확인되는 대로 이 Window를 옆으로 옮김(Sliding)으로써 그 다음 패킷들을 전송할 준비를 한다.
- 전이중성 데이터(Full-duplex Data) : 같은 연결 상에서 양방향 데이터 흐름
- 최대 세그먼트 크기 (Maximum Segment Size, MSS)
헤더를 제외하고 TCP가 실을 수 있는 최대 데이터 크기
기본값은 IPv4 -> 536 Byte, IPv6 -> 1220 Byte이다.
최대 전송 단위(MTU)에 의해 값이 결정되며, MSS값은 헤더의 MSS 옵션 필드에 저장된다.
연결에 참여하는 두 장비가 서로 다른 MSS값을 갖을 수도 있다.
- 최대 전송 단위(Maximum Transmission Unit, MTU)
데이터 링크(2계층) 또는 네트워크(3계층)에서 하나의 프레임 또는 패킷에 담아 운반할 수 있는 헤더를 포함한 최대 데이터 크기
최소 권고값은 2계층 기준 1500Byte이며, 3계층 기준 IPv4는 MSS 크기에서 40byte(IP헤더+TCP헤더)를 추가한 576Byte이고, IPv6는 1280Byte이다.
실제로는 최대 65,646바이트 범위까지 생성가능하다.
- MTU가 IP 기반의 정보인 반면, MSS는 TCP 기반의 정보이다.
- TCP는 연결지향형으로 제어 메시지들의 교환(Handshaking)이 이루어진다. 핸드쉐이킹을 통해 데이터 교환 전에 송신자 및 수신자의 상태를 초기화한다.
- 흐름 제어(Flow Control) : 수신자의 속도에 맞춰서 송신자가 데이터를 보낸다.
- 기다리는 것보다 높은 순서번호를 가진 세그먼트가 도착. 즉, 송신측에서 여러 개의 세그먼트를 전송한 후 중간 세그먼트가 손실된 경우 => 즉시 기다리는 바이트의 순서번호에 해당하는 중복 ACK를 전송한다. 이 때, 보낼 세그먼트가 없더라도 ACK를 위해 헤더만 별도로 생성하여 송신측으로 전송한다. (ACK는 항상 세그먼트의 헤더에 포함되어 있음 - piggybacked ACK 방식)
- 위의 상황에서 발생한 갭(손실된 세그먼트)를 부분적으로 또는 모두 채워주는 세그먼트가 도착한 경우 => 부분적으로 도착하면 아직 받지 못한 세그먼트 중 가장 낮은(오래된) 순서번호의 ACK를 전송한다. 모두 도착했다면 위의 상황에서 높은 순서번호를 가진 세그먼트의 다음 세그먼트의 순서번호를 가진 ACK를 전송한다.
- 예제1) 각각 100kHz의 대역폭을 가진 5개의 채널이 함께 전송되어진다. 이 때, 링크에서 대역폭이 겹치지 않게 10kHz의 가드밴드가 요구되어진다면, 링크의 최소 대역폭은 얼마인가?
5 * 100 + 10 * 4 = 540 kHz
- 예제2) 채널당 자료 전송율이 1Mbps 인 4개의 채널이 1MHz인 하나의 위성채널을 이용하여 전송된다. 적절한 구성을 표현하라.
위성 채널은 아날로그를 사용하므로, 하나의 링크로 볼 수 있다. 4개의 채널을 사용하므로 각 채널당 대역폭은 1MHz / 4 = 250 kHz 이다. 여기서 1초에 1M bits가 전송된다는 뜻은 1초에 250 kHz가 전송된다는 뜻이므로, 1Hz당 전송되는 비트 수는 4 bits이다. 즉, 신호당 비트 수가 4이므로, r = log2L 식을 사용하여 신호 레벨이 16인 것을 알 수 있다. 따라서 16-QAM으로 표현할 수 있다.
쉽게 말해, 각각의 1Mbps의 디지털 정보를 16-QAM 방식으로 변조하여 250 kHz 아날로그 신호로 나타낸 뒤, 네 개의 신호를 FDM 방식으로 복합신호로 합쳐 1MHz의 링크로 전송한다는 의미이다.
비트 채우기 (Pulse Stuffing) : 여러 입력 라인의 속도가 배수로 나누어 떨어지지 않아서 위의 두가지 방식을 사용할 수 없을 경우에 사용하는 방식이다. 다수의 입력 라인의 속도에 비해 조금 낮은 하나의 입력라인이 있다면 dummy bits를 추가하여 가장 높은 자료전송율에 맞춘다.
- 설명 : 1개의 오디오 채널을 예시로 들면, 사람의 음성은 0~4kHz의 범위의 대역폭을 가지며, 이므로 최소 1초에 8000번의 Sampling을 한다는 의미이다. 위의 경우 샘플링당 1바이트(8비트)이므로
따라서 위의 맨 왼쪽 그림에서 64kbps값이 나온 것이다. 각 채널이 64kbp인 24개의 채널이 TDM 방식으로 그룹화되어 모이면 두 번째 1,544 Mbps가 된다. 이 때, 초당 샘플링이 8000개 되므로, 프레임 수는 8000개이다. 각 프레임당 1비트씩 프레이밍 비트가 추가되면 전체적으로 1bit * 8000 = 8000비트가 오버헤드 된다. 따라서 64kbps * 24(channel) + 8kbps = 1,544 Mbps가 나오는 것이다. 참고로 1바이트씩 샘플링 했으므로 타임슬롯당 1바이트이다.
초기에는 군사용으로 사용한 전자파를 이용하여 무선통신에서 적에게 도청되지 않고, 적의 방해전파에도 강한 통신방식을 구현하기 위함이었다. 현재는 이동통신환경(무선통신)에서 자주 쓰이고 있으며, 외부의 전자파 잡음에 강하도록 특정 신호의 주파수 대역(spectrum)을 넓히는 기술을 뜻한다.