I. 연결 지향적 신뢰 기반 프로토콜, TCP의 개념
가. TCP (Transmission Control Protocol의 정의
전송 계층에서 3-Way Handshaking을 통해 연결 지향적 신뢰성 있는 데이터 전송 프로토콜
나. TCP의 응용계층 제공 서비스
프로세스 대 프로세스 통신 | – 송/수신지의 포트 번호를 통해 프로세스 간 연결을 수립하여 데이터 전송 수행 |
스트림 배달 서비스 | – 두 프로세스 간 바이트 스트림 형태로 생성/소비되도록 스트림을 전달 |
다. TCP의 특징
구분 | 특징 | 설명 |
---|---|---|
구성 형태 측면 | 송신 버퍼와 수신 버퍼 | – 송/수신 데이터 전송 속도 차이 보정 – 흐름 및 오류 제어 메커니즘에 활용 |
세그먼트 형태로 전송 | – IP 계층에서는 패킷 형태로 전송하므로 바이트를 세그먼트 형태로 그룹화 | |
서비스 측면 | 다중화와 역다중화 | – 연결 지향 프로토콜이므로 송/수신지의 해당 프로세스 간 연결 설정 |
연결 지향 서비스 | – 연결 수립-데이터 전송-연결 종료의 3단계로 가상의 연결 기반 서비스 | |
신뢰성 있는 서비스 | – 데이터가 오류없이 전송되는지 확인 위해 확인/응답 메커니즘 이용 |
– TCP는 신뢰성 있는 서비스를 위해 연결 지향성 특징을 가지며, 흐름 제어를 수행
II. 신뢰성 있는 서비스 위한 TCP의 연결 지향성 특징
가. TCP 연결 지향성 특징 구성도
나. TCP 연결 지향성 특징 요소
구분 | 특징 | 설명 |
---|---|---|
서비스 특징 | 논리적 연결 | – 호스트 간 연결 지향 데이터 전송을 위해 논리적 연결 설정 및 해제 |
바이트 순서 정렬 | – IP 계층에서 패킷 순서가 바뀌어 수신되어도 바이트 번호 기반 정렬 | |
절차적 특징 | 3-Way Handshaking | – 연결 수립-데이터 전송-연결 해제의 3단계 절차를 통해 신뢰성 확립 |
헤더 제어 필드 활용 | – TCP 헤더의 제어 필드를 활용하여 SYN, ACK, FIN 등의 절차 수행 |
– TCP 연결 수립 후 데이터 전송 시 송/수신 속도 제어를 위해 윈도우 기반 흐름 제어를 수행
III. 송수신 속도 제어 위한 네트워크 흐름 제어 기법
가. 네트워크 흐름제어 기법 사례
나. 네트워크 흐름제어 사례를 통한 기법 설명
No | Client 상황 | 전송 | Server 상황 |
---|---|---|---|
① | – 서버로 200 bytes 전송 | Client SeqNo: 101 Data: 200 bytes | – Data 수신 – rwnd→600 감소 |
② | – 송신 버퍼 Size→600 | Server AckNo: 301 rwnd: 600 | – 수신 응답 – rwnd→600 조정 |
③ | – 서버로 300 bytes 전송 | Client SeqNo: 301 Data: 300 bytes | – 수신, 100byte처리 – rwnd→400 감소 |
④ | – 송신 버퍼 Size→400 | Server AckNo: 601 rwnd: 400 | – 수신 응답 – rwnd→400 조정 |
⑤ | – 송신 버퍼 Size→600 | Server AckNo: 601 rwnd: 600 | – 응답, 200byte처리 – rwnd→600 조정 |
– TCP 흐름 제어는 속도 차이를 극복할 수 있으나, 적은 데이터 전송 시 오버헤드 발생 등 문제점 존재
IV. TCP 통신 시 발생 가능 문제점 및 해결 방안
문제점 | 해결 방안 |
---|---|
Data 1 byte 생성 시 헤더 포함 41byte 전송 필요 | 충분한 Data를 버퍼에 저장하는 Nagle 알고리즘 사용 |
Data 1 byte 소비 시 송신 대기 현상 발생 | 충분한 버퍼 확보 시 까지 윈도우 크기를 0으로 통보 |
데이터 시작과 끝의 개념이 없음 | recoed-oriented 특성 도입, datagram 단위 전송 |
연결지향 통신 특성으로 TCP 소켓 범위의 제약 | 멀티스트리밍, 멀티호밍, SCTP 프로토콜 사용 |
– SCTP는 TCP와 UDP의 장점을 융합하여 만든 프로토콜이며, LTE 등 이동통신에서 SCTP 활용 중
View Comments (1)
공부하고 갑니다. 내용이 좋아서 퍼갑니다.
출처 꼭 남기겠습니다.