본문 바로가기

컴퓨터네트워크

컴퓨터 네트워크 : TCP, UDP, SCTP 전송층 프로토콜 - 3

세그먼트 : TCP에서는 패킷을 세그먼트 라고한다.

세그먼트는 20 ~ 60 바이트의 헤더와 응용 프로그램으로부터 온 데이터로 구성된다. 선택 항목이 없다면 20바이트이며, 선택항목이 있다면 60 바이트까지이다. 이 부분에서 헤더 필드를 설명한다. 

근원지 포트 주소 : 세그먼트를 송신하는 호스트에 있는 응용 프로그램의 포트 번호를 정의하는 16비트 필드이다.

목적지 포트 주소 : 세그먼트를 수신하는 호스트에 있는 응용 프로그램의 포트 번호를 정의하는 16비트 필드이다.

순서번호 : 이 32비트 필드는 이 세그먼트에 포함된 첫 번째 데이터 바이트에 할당된 번호를 정의한다. TCP는 스트림 전송 프로토콜로 연결성을 확신하기 위해서 전송되는 각 바이트에는 번호가 부여된다. 초기순서번호(ISN) 를 생성하기 위하여 랜덤 번호 생성기를 사용하며, 각 방향에서 보통 다른 번호가 생성된다.

확인응답번호 : 이 32비트 필드는 세그먼트의 송신자가 다른 쪽으로부터 받기를 기대하는 바이트 번호를 정의한다. 세그먼트 수신자는 상대방으로부터 바이트 번호 x를 성공적으로 수신하였다면 x+1이 확인응답 번호가 된다. 확인응답과 데이터는 함께 피기백이 될 수 있다.

헤더 길이 : 이 4비트 필드는 TCP 헤더를 4바이트 단위의 개수로 나타낸 것이다. 헤더의 길이는 20에서 60바이트가 될 수 있으며, 이에 따라 필드 값은 5(5 * 4 =20) 에서 15 (15 * 4 = 60) 사이 의 값이 될 수 있다.

 

TCP 헤더 구조

제어(control)  : 6개의 다른 제어 비트 또는 플래그 비트를 정의한다. 1개 또는 그 이상의 비트가 한 번에 설정된다. 이러한 비트들이 TCP에서 흐름 제어, 연결 설정과 종료, 연결 중지 그리고 데이터 전송 모드를 가능하게 한다. 각 비트에 대한 간단한 설명을 그림에서 볼 수 있다. 


URG: 16 비트로 긴급 플래그 값이 설정되었을 때만 유효하며 세그먼트가 긴급 데이터를 포함하고 있을 때 사용된다.

ACK: 응답 번호가 포함 되있을 때 작동한다.

PSH: 처리를 효율적으로 하기위해 짧은 데이터를 모아서 보냄 그 때 사용되는 비트

RST: 비정상적으로 연결을 끊을때

SYN:순서번호를 동기화 시킬 때

FIN: 연결을 해지할 때


윈도 크기: 이 필드는 상대방이 반드시 유지해야 하는 바이트 단위의 윈도 크기다. 이 필드의 길이는 16비트이고 따라서 윈도 최대 크기가 65,636 바이트임을 의미한다. 이 값은 보통 수신윈도(rwnd)로 언급이 되고 수신자에 의해서 결정된다. 이 경우 송신자는 수신자의 지시를 따라야만한다.

검사합(checksum): 이 16비트 필드는 검사합을 가지고 있다. TCP를 위한 검사합의 계산은 UDP와 동일한 절차를 따른다.그러나 UDP 데이터그램에 있는 검사합의 포함은 선택사항이지만 TCP를 위한 검사합은 필수사항이다. 

캡슐화 : TCP 세그먼트는 응용층으로부터 수신된 데이터를 캡슐화한다. TCP 세그먼트는 IP데이터그램에 캡슐화되고, 차례로 데이터링크층에서 프레임으로 캡슐화된다.

TCP 연결 : 연결 지향 전송 프로토콜로서 근원지와 목적지 사이에 가상 경로를 설정한다.

TCP는 전이중 모드로 데이터를 전송한다. 2개의 시스템에 있는 2개의 TCP들이 연결될 때 동시에 서로 세그먼트를 송신할 수 있다. 이것은 양쪽이 각각 통신을 초기화해야 하고, 데이터를 전송하기 전에 다른 쪽으로부터 승인을 얻어야 한다는 것을 의미한다.

TCP에서 연결 설정은 세 - 방향 핸드 셰이크 로 불린다. 한 예로 전송층 프로토콜로 TCP를 사용하여, 클라이언트(Client) 라고 하는 한 응용 프로그램이 서버(serve)라고 하는 또 다른 응용 프로그램과 연결을 만들기를 원한다.

서버 프로그램은 연결을 받아들일 준비가 되어 있다고 TCP에게 알린다. 이것을 수동 개방 요청 이라고 한다. 서버 TCP는 세상에 있는 어떠한 컴퓨터들로부터도 연결을 받아들일 준비가 되어 있지만 스스로 연결 자체를 만들 수는 없다.

클라이언트 프로그램은 능동 개방 (active open) 요청을 유발한다.