TCP 세그먼트와 TCP 패킷의 차이점은 무엇입니까? TCP 세그먼트는 TCP 패킷의 일부가 아닌가? 내가

TCP 세그먼트는 TCP 패킷의 일부가 아닌가?

내가 읽은 것은 다음과 같습니다.

세그먼트는 TCP에 의해 전송 가능한 크기로 잘리고 TCP 헤더로 감싸 진 응용 프로그램 데이터입니다.

TCP 헤더 자체가 세그먼트로 구성되어 있지 않습니까?



답변

우리 TCP segment는 TCP 헤더와 (상위) 응용 계층에서 오는 응용 프로그램 데이터 조각 (패킷)을 구성하는 프로토콜 데이터 단위 라고 말합니다 . 로 전송 계층 데이터는 일반적으로 이름 segment과 네트워크 계층 데이터 단위는 다음과 같이 이름 datagram하지만 우리는 전송 계층 프로토콜로 UDP를 사용할 때 우리는 말을하지 않는 UDP segment대신, 우리가 말한다 UDP datagram. UDP 데이터 단위를 분할하지 않기 때문이라고 생각합니다 (TCP를 사용할 때 전송 계층에서 분할이 이루어짐).


답변

원래 TCP RFC는 “세그먼트”라는 용어를 어떻게 사용하는지에 대해 모호합니다.

경우에 따라 “세그먼트”라는 용어는 전송중인 응용 프로그램 데이터 스트림의 현재 부분 만 나타내며 TCP 헤더는 제외됩니다. 예를 들어, TCP “MSS (Maximum Segment Size)”는이 메시지에서 응용 프로그램 데이터 청크의 최대 크기이며 TCP 헤더는 계산하지 않습니다.

그러나 다른 경우에는 “세그먼트”라는 용어는 TCP 헤더를 포함하여 전체 TCP 메시지를 포함합니다. 실제로, 적어도 하나의 경우에, 사양은 애플리케이션 데이터 (예 : 일반 Acks)가없는 TCP 세그먼트를 언급합니다.

하나의 전체 IP 메시지는 “데이터 그램”입니다.

원래 IP RFC는 링크 계층 메시지를 “패킷”이라고합니다. IP 데이터 그램은 소형 패킷 네트워크의 패킷 크기 제한에 맞게 “조각”으로 나눌 수 있습니다.

IEEE 802.3 / 이더넷 링크 계층은 단일 연속 물리 계층 전송을 “패킷”이라고합니다. 패킷의 MAC 데이터 링크 부분을 “프레임”이라고합니다. 프레임은 대상 MAC 주소로 시작하고 프레임 확인 시퀀스로 끝납니다. IP 데이터 그램 (또는 그 단편)을 포함 할 수있는 프레임 부분을 “MAC 클라이언트 데이터 필드”라고합니다.

따라서 기술적으로 “TCP 패킷”또는 “IP 패킷”과 같은 것은 없습니다. 패킷은 IP 아래 계층의 용어입니다. TCP에는 “세그먼트”가 있고 IP에는 “데이터 그램”이 있습니다.


답변

“세그먼트 헤더”라고도하는 TCP 헤더와 페이로드 또는 데이터 또는 “세그먼트 데이터”는 다양한 크기의 TCP 세그먼트를 구성합니다.


답변

TCP 세그먼트를 데이터 그램이라고합니다. 일반적으로 세그먼트 또는 데이터 그램은 패킷입니다. 네트워크 계층에서 데이터 그램 또는 패킷을 처리하면 IP 헤더가 데이터에 추가되고 IP 패킷이됩니다.

전송 계층은 데이터를 세그먼트, 데이터 그램 또는 소위 패킷이라고하는 더 작은 단위로 분할합니다. 그러나 일반적으로이를 세그먼트라고합니다.


답변

TCP 세그먼트는 개념 일 뿐이며, IP 조각 모음과는 다릅니다.

ip mtu보다 큰 데이터를 보내면 하나의 ip 패킷에 넣어 지지만 ip 레이어는 ip 패킷이 전송하기에 너무 길다는 것을 알기 때문에 큰 패킷을 여러 조각으로 나눕니다. 식별자이지만 오프셋과 데이터 길이가 다릅니다. 수신 측은 모든 피스를 수집 할 책임이 있으며, 모든 피스를 수신 한 후 모든 피스를 하나의 전체 IP 패킷으로 재 조립하여 상위 프로토콜 계층으로 푸시합니다.

그러나 tcp 레이어는 다른 동작을합니다. 충분히 큰 데이터를 보내면 tcp 레이어는 데이터를 하나의 tcp 패킷에 넣지 않고 조각으로 나눕니다 (그러나 ip는 않습니다), 원시 데이터의 일부를 하나의 tcp 패킷으로 가져 와서 푸시합니다. tcp packet to ip layer, tcp 패킷의 길이는 mss에 의해 결정되며, 나중에 나머지 데이터의 다른 부분을 다른 tcp 패킷으로 검색하고 모든 데이터가 전송 될 때까지 프로세스를 반복합니다.

tcp가 mss를 사용하지 않으면 끔찍합니다. mss보다 큰 데이터를 전송한다고 가정하면 하나의 tcp 패킷에만 저장됩니다 (데이터는 사용되지 않은 ms로 인해 작은 조각으로 분할되지 않음) .tcp 패킷은 ip mtu보다 크므로 ip는 tcp를 분할합니다 조각으로 패킷. tcp 패킷은 조각 중 하나라도 손실되면 시간과 대역폭을 낭비하여 다시 전송됩니다.

추신 : tcp_mss = ip_mtu-tcp_header


답변

헤더는 세그먼트로 구성되지 않습니다. 헤더의 크기는 항상 동일하며 완전해야합니다. 그렇지 않으면 패킷을 디코딩 할 수 없습니다.

“세그먼트”라고하는 것은 나중에 다른 “TCP 스트림”과 결합 된 “패킷”전체입니다. 보다:

Transmission Control Protocol은 데이터 스트림에서 데이터를 받아 청크로 분할하고 TCP 세그먼트를 생성하는 TCP 헤더를 추가합니다.


답변

TCP는 응용 프로그램 계층에서 데이터를 수신하고이 데이터를 여러 데이터 세그먼트로 ‘잘라냅니다’. TCP 헤더가 추가 된 원본 데이터 조각 이 헤더의 일부는 수신 측의 TCP 프로토콜이 모든 수신 세그먼트 (헤더를 뺀 것)를 올바른 순서로 배치하고 원래 데이터를 다시 어셈블하여 애플리케이션 계층으로 전송하는 데 사용되는 시퀀스 번호입니다. .

따라서 귀하의 질문에 대답하십시오. ‘TCP 패킷’이라는 용어는 실제로 존재하지 않습니다. 이를 헤더와 데이터 섹션으로 구성된 ‘세그먼트’라고합니다. 헤더 자체는 시퀀스 번호, 체크섬 및 소스 및 대상 포트 번호를 포함하는 여러 ‘필드’로 구성됩니다.