01. 트랜스포트 계층의 역할

 

트랜스포트 계층에서 애플리케이션 계층으로 데이터를 전달한다.
=> 사용되는 분류기준은 포트번호!! 포트번호로 애플리케이션을 구분한다.

 

TCP는 1) 전송속도를 조절하고 2) 도달하지 않은 데이터를 재전송함 - 데이터의 정확한 전달을 중시


UDP는 별다른 처리 없이 데이터를 전송함 - 전송 속도를 중시

 

02. 포트번호

 

인터넷 계층으로부터 전달받은 패킷을 애플리케이션으로 다시 전달하기 위해, 포트번호를 확인한다.

서버의 포트번호는 '웰 노운 포트'로 미리 정해져있고, 클라이언트가 사용하는 포트번호는 매번 다르다.

(그때 그때 비어있는 포트번호를 할당함. 어떤 번호가 사용될지 미리 알 수 없음)

 

클라이언트와 서버의 접속이 완료되기까지의 과정)

1. 클라이언트 측 포트 할당(다이나믹 포트)

2. 서버로 접속 요청(웹 서버의 경우 80번 - 웰 노운 포트)

3. 접속 완료. 통신이 완료되면 클라이언트는 포트를 반납.

 

서버는 클라이언트의 포트번호와 IP 어드레스의 조합을 기억해두고 상대방을 식별한다.

 

03. TCP가 정확하게 데이터를 전달하는 방법

TCP(Transmission Control Protocol), 트랜스포트 계층의 프로토콜중 하나이다.

 

TCP가 하는일)

1.데이터를 세그먼트라는 단위로 분할하고 

2. 통신상태에 따라 전송 속도를 조절한다

3. 데이터가 제대로 전달되지 않았을 경우에는 재전송

 

TCP 헤더에는 포트번호나 일련번호와 같은 정보가 포함되어 있음.

 

 

TCP 통신은 커넥션 연결에서 시작한다.

커넥션을 맺는 과정은 3단계로 진행되기 때문에 이것을 3방향 핸드셰이크 라고 부른다.

데이터 전송이 끝나면 커넥션을 끊는다.(끊을땐 4way)

 

커넥션을 맺을 때 일련번호와 최대 세그먼트 크기를 서로 합의하고 조율하는 과정을 거친다.

일련번호와 확인 응답 번호를 따로 관리하면서 데이터가 제대로 송수신 되는지 확인한다.

 

일정시간이 지난 후에도 수신측으로부터 응답이 오지 않을 경우 송신 실패로 간주하고 최근에 정상적으로 응답을 받은 후부터 데이터를 재전송한다.

 

 

데이터를 수신하는 측은 수신한 데이터를 일시적으로 보관할 수 있는 버퍼(buffer) 라는 저장 영역을 가지고 있다.

수신측은 TCP헤더의 윈도우 사이즈에 이 버퍼의 크기를 설정하고 송신측에 통보함으로써 어느정도 크기의 데이터를 받을 수 있는지 알려주게 된다.

 

 

수신측은 응답을 보낼 때 윈도우 사이즈를 설정하여 현재 어느정도 까지 수신할 수 있는지를 수시로 알려주게 된다.

이 과정을 흐름 제어(flow control)라고 한다.

 

버퍼가 가득차면 윈도우 사이즈가 0으로 설정되고 데이터 전송을 멈추게 된다.

다시 전송을 재개하기 위해 송신측에서 윈도우 프로브(window probe)라는 패킷을 수신측에 보내게 되고, 수신측의 응답을 받아 현재 윈도우 사이즈를 확인한 후에 전송 재개여부를 결정한다.

 

 

04. UDP가 고속으로 데이터를 전달하는 방법

UDP는 다른 처리 없이 전송만 한다.

TCP에는 없는 기능으로 UDP에는 하나의 패킷을 여러 수신지에 전달하는 브로드캐스트와 멀티캐스트라는 기능이 있다.

 

UDP에서도 신뢰성을 높이려면, 애플리케이션 계층에서 흐름 제어혼잡 제어를 구현해서 부족한 신뢰성을 보완하게 된다.

+ Recent posts