저레벨의 패킷 리더 (wireshark와 같은)를 학습 목적과 재미로 만들려고합니다.TCP 스트림의 끝을 나타내는 것은 무엇입니까?
http 구문 분석으로 이동하면 이러한 TCP 스트림이 있고 그 데이터가 모두 하나의 패킷으로 제공되는 것은 아니라는 것을 금방 알게되었습니다.
편집 : 내가 들었던 스트림으로 생각하는 것은 올바른 용어가 아닙니다. David Schwartz는 쿼리으로, EJB는 세그먼트 시퀀스으로 언급했습니다.
그래서 나는 TCP에 약간의 독서를했고, 나는 이미의 지식을했다 순서 및 확인 번호, 그들은 증가 등 주변 포장 방법 ..연결 설정 및 종료에 대한 모든 곳에서 읽었습니다 .
나는 해석이나 Google을 잘 사용 해본 적이 없지만 조금만 봤는데 서버/클라이언트가 어떻게되는지 이해할 수 없다. TCP 흐름.
http 요청의 전체를 보낸 후 서버가 즉시 페이지에 응답하므로 wireshark에서 패킷을 통해 전달하고 전달할 수 없기 때문에 이 스트림을 구분하는 것을 찾으십시오 (첫 번째 패킷의 길이 또는 마지막에서 두 번째 패킷까지의 차이를 나타내는 모든 것).
TCP에 실제 구분 기호가 없으며 http 헤더의 Content-Length
에서 전체 길이를 얻을 수 있습니까? 여기에서 알 수있는 바와 같이
, 제 3 개 패킷은 접속 설정이다.
그 후 3은 http 요청 (처음에는 ACK (선택된 것)이고, 최신 2는 PSH & ACK입니다)의 전송입니다. 그 다음 두 개는 서버의 ACK이며 응답 전체가 이어집니다.
마지막 하나는 나의 ACK이고 "기록한"시간 동안 연결이 닫히지 않습니다.
감사합니다.
이 질문에 대한 답변이 있습니까? https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Connection_termination –
@OliverCharlesworth'연결 설정 및 종료 이미 지식이 있습니다.' – TrisT
HTTP 스펙은 조회의 끝을 찾는 f}을 설명합니다. TCP 수신 스트림을 HTTP 파서 입력에 연결해야합니다. –