2011. 7. 21. 19:12



01. TCP 소켓의 연결설정 과정인 Three-way handshaking에 대해서 설명해 보자. 특히 총 3회의 데이터 송수신이 이뤄지는데, 각각의 데이터 송수신 과정에서 주고 받는 데이터에 포함된 내용이 무엇인지 설명해보자.


TCP의 내부 동작 원리 1: 상대 소켓과의 연결
TCP 소켓은 연결설정 과정에서 총 세 번의 대화를 주고 받는데, 이를 가리켜 Three-way handshaking 이라 한다.

[Three-way handshaking과정]


 

 

[SYN] SEQ : 8000, ACK : -
처음 연결요청에 사용되는 메시지 이기에 이 메시지를 가리켜 ‘SYN’이라 한다
.
데이터 송수신에 앞서 전송되는 동기화 메시지

[SYN + ACK] SEQ : 15000, ACK : 8001
처음 client가 전송한 패킷에 대한 응답 메시지(ACK 8001)과 함께 호스트 B의 데이터 전송을 위한 동기화 메시지(SEQ 15000)을 함께 묶어서 보낸다. 이런 유형의 메시지를 SYN+ACK라 한다.

[ACK] SEQ : 8000 ACK : 15001
15001 패킷을 전송하길 요청.

 


02. TCP는 데이터의 전송을 보장하는 프로토콜이다. 그러나 인터넷을 통해서 전송되는 데이터는 소멸될 수 있다. 그렇다면 TCP는 어떠한 원리로 중간에 소멸되는 데이터의 전송까지 보장을 하는 것인지 ACK와 SEQ를 대상으로 설명해 보자.

ACK
번호 -> SEQ 번호 A+ 전송된 바이트 크기 + 1
!
중간에 패킷이 소멸되는 경우
= > 데이터 손실에 대한 재전송을 위해서, TCP 소켓은 ACK 응답을 요구하는 패킷 전송 시에 타이머를 동작시킨다. 그리하여 해당 타이머가 Time-Out 되었을 때 패킷을 재전송한다.



03. TCP 소켓을 기반으로 write함수와 read 함수가 호출되었을 때의 데이터 이동을 입력버퍼와 출력버퍼의 상태와 더불어 설명해 보자.

TCP 소켓에 존재하는 입출력 버퍼
TCP 소켓의 데이터 송수신에는 경계가 없다. , 서버가 한번의 write 함수 호출을 통해서 40바이트를 전송해도 클라이언트는 네 번의 read 함수 호출을 통해서 10바이트씩 데이터를 수신하는 것이 가능하다. 이러한 것이 가능하게 해 주는 것이 바로 버퍼이다
.
write 함수가 호출되는 순간 데이터는 출력버퍼로 이동을 하고, read 함수가 호출되는 순간 입력버퍼에 저장된 데이터를 읽어 들이게 된다
.

 

입출력 버퍼의 특성

Posted by Triany