본문 바로가기
컴퓨터 네트워크

컴퓨터 네트워크 26장 - TCP -

by ChocoPeanut 2017. 5. 2.

컴퓨터 네트워크 26

- TCP -

 

TCPIP 프로토콜 위에서 연결형 서비스를 지원하는 전소 계층의 프로토콜로 Transport Control Protocol이다. 연결형 서비스를 제공하고 전이중 방식의 양방향 가상회선을 제공한다. 연결형 서비스이므로 신뢰성 있는 데이터 전송을 보장한다. 신뢰성 있는 데이터를 전송하나다는 것은 오류 제어, 흐름 제어를 통해 데이터를 안전하게 전송한다는 것을 의미한다. 일반적으로 전송계층 프로토콜은 운영체제 내부 기능으로 구현되므로 시스템 콜이라는 프로그램 호출 방식을 이용해야 서비스를 사용할 수 있다.


TCP에서는 데이터를 세그먼트라는 블록 단위로 분할하여 전송한다. 데이터 링크 계층에서는 프레임, 네트워크 계층에서는 패킷이라는 단위를 사용했다. 세그먼트라는 블록의 크기는 네트워크 부하 정도나 윈도우 크기에 영향을 받아 가변적인 크기를 가진다. 세그먼트 당 순서번호를 부여하지 않고, 세그먼트에 실어 보내는 데이터 바이트 수를 순서번호에 반영한다.


상위계층에서 연결형 서비스와 비연결형 서비스를 선택하여 전송 계층 프로토콜을 선택한다. 연결형 서비스는 앞에서 말한 TCP를 의미하고 비연결형 서비스는 전송 계층에서 지원하는 다른 서비스인 UDP를 의미한다. 연결 유무, 신뢰성 외에도 해당 전송계층을 선택했을 때 각 응용 프로그램에서 수행해야 하는 기능에 따라 서비스를 선택하여 지원한다.



TCP 헤더는 최소 20바이트 최대 40바이트의 크기를 가진다. 많은 필드를 가지게 된다. 우선 송신 포트, 수신 포트에 해당하는 값을 가지고 있다. TCP로 연결되는 가상 회선 양단의 송수신 프로세슷에 할당된 네트워크 포트 주소를 의미한다. 순서 번호가 다음으로 나오는데 세그먼트 내의 바이트 수를 기준으로 증가하는 값이다. 응답 번호는 수신 프로세스가 제대로 수신한 바이트의 수를 응답하기 위해 사용하는 필드이다. 데이터 옵셋은 TCP의 헤더 크기가 해당된다. 윈도우는 슬라이딩 윈도우 프로토콜에서 수신 윈도우의 버퍼 크기를 지정하려고 사용하며, 수신 프로세스가 수신할 수 있는 바이트의 수를 표시한다. 윈도우 값을 통해 흐름 제어를 할 수 있다. 체크섬은 헤더와 데이터에 대한 오류 검출에 사용된다. 긴급 포인터는 긴급 데이터를 처리하기 위한 값을 나타낸다.



TCP 헤더에는 플래그 비트가 존재한다. 8개의 플래그 비트가 존재하는데 처음 2개의 비트는 혼잡 제어 용도로 사용되고 나머지 6개 비트는 1의 값을 가지게 되면 각각의 의미를 가지게 된다. URG는 긴급 포인터의 필드가 유효한지를 나타낸다. ACK는 응답 번호가 유효한지를 나타내고 PSH는 현재 세그먼트의 데이터를 즉시 상위 계층에 전달하도록 지시하는 기능을 수행한다. RST는 연결의 리셋이나 유효하지 않은 세그먼트에 대한 응답에 사용된다. SYN은 연결 설정 요청에 사용되고 FIN은 점진적 방식의 연결 종료를 요청할 때 사용한다.


TCP는 계층 5 프로토콜의 데이터를 받아서 TCP헤더를 붙여서 TCP 세그먼트의 캡슐화를 통해 IP 계층으로 전송된다.


포트 번호TCP, UDP 프로토콜이 상위 계층에 제공하는 주소 표현 방식을 의미한다. TCP, UDP가 독립적으로 관리를 하여 동일한 번호를 가질 수 있는데, 각각은 별개의 포트가 된다. 서버의 포트 번호는 Well-known 포트 번호를 이용하고 클라이언트의 경우 시스템에서 임의의 포트를 자동으로 할당받게 된다. TCP 연결 설정이 되면 통신 양단의 프로세스가 사용하는 고유 주소는 해당 호스트의 IP주소와 호스트 내부의 포트 번호가 조합된 형태이다



출처 - 데이터 통신과 컴퓨터 네트워크