2014-04-18 3 views
0

HTTP 요청 및 응답에 대해 TCP 연결을 시작한다고 가정합니다. 세 방향 핸드 쉐이킹 프로세스가 완료된 후 이제 서버에 SYN 플래그가 설정된 HTTP 패킷에 대한 요청을 보냅니다. 서버가 ACK 플래그로 요청에 응답합니다. 응답이 완료되면 FIN 플래그가 전송됩니다. 이제 요청 및 응답 중에 서버가 보내는 패킷의 크기를 어떻게 결정할 수 있습니까? 그렇게 할 수있는 절차가 있습니까?패킷 크기를 결정하는 방법

+1

어떤 언어입니까? 어떤 플랫폼? 예, 패킷 크기를 결정하는 방법에 대한 프로세스가 있지만 각 언어 및 언어에 따라 각 플랫폼은 패킷 길이/크기를 결정하는 방법이 약간 다릅니다. –

+0

@bwtrent 그게 사실이 아닙니다. 그는 HTTP 응답 길이를 묻습니다. 언어 나 플랫폼에 의존하지 않습니다. – EJP

+0

@EJP, 네 말이 맞아. – UlFaTyAnG

답변

0

HTTP 요청 및 응답에 대해 TCP 연결을 시작한다고 가정합니다. 세 방향 핸드 쉐이킹 프로세스가 완료된 후 이제 서버에 SYN 플래그가 설정된 HTTP 패킷에 대한 요청을 보냅니다.

아니요. SYN은 3 방향 핸드 셰이크로 전송 된 첫 번째 패킷에 있습니다. 끝났어. 연결 핸드 셰이크의 최종 ACK 패킷에서 HTTP 요청을 피기 백 (piggy-backing)합니다.

서버가 ACK 플래그로 요청에 응답합니다.

아니요, 서버가 HTTP 요청에 HTTP 응답으로 응답합니다. ACK는 HTTP 레벨과 관련이 없습니다.

응답이 완료되면 FIN 플래그가 전송됩니다.

HTTP 1.0을 말하고 있거나 Connection : close 헤더를 설정하지 않는 한 그렇지 않습니다. 그렇지 않으면 HTTP 연결 유지를 위해 연결을 계속 열어 둡니다.

이제 요청 및 응답 중에 서버가 보내는 패킷의 크기를 어떻게 결정할 수 있습니까? 그렇게 할 수있는 절차가 있습니까?

서버가 요청하는 동안 아무 것도 보내지 않았습니다. 응답 본문의 크기는 Content-length 헤더 또는 청크 인코딩 섹션 크기의 합계에 의해 제공됩니다. 이것에 관해 HTTP 1.1 RFC를 읽을 필요가 있습니다.

또한 HTTP와 TCP를 혼동하지 말아야합니다. HTTP는 맨 위에 계층화 된 응용 프로그램 프로토콜입니다.

관련 문제