ความแตกต่างระหว่างเซ็กเมนต์ TCP และแพคเก็ต TCP คืออะไร


16

เซ็กเมนต์ TCP ไม่ได้เป็นส่วนหนึ่งของแพ็กเก็ต TCP หรือไม่

นี่คือสิ่งที่ฉันได้อ่าน:

เซกเมนต์เป็นชิ้นส่วนของข้อมูลแอปพลิเคชันที่ถูกสับเป็นขนาดที่สามารถเคลื่อนย้ายได้โดย TCP และล้อมรอบด้วยส่วนหัว TCP

ส่วนหัว TCP นั้นประกอบด้วยเซกเมนต์หรือไม่

คำตอบ:


21

เราบอกว่าTCP segmentเป็นหน่วยข้อมูลโปรโตคอลซึ่งประกอบด้วยส่วนหัว TCP และชิ้นส่วนข้อมูลแอปพลิเคชัน (แพ็คเก็ต) ซึ่งมาจากชั้นแอพลิเคชัน (บน) ขนส่งข้อมูลชั้นการตั้งชื่อโดยทั่วไปเป็นsegmentและหน่วยงานเครือข่ายชั้นข้อมูลมีชื่อเป็นdatagramแต่เมื่อเราใช้ UDP เป็นโปรโตคอลชั้นการขนส่งเราไม่ได้พูดแทนเราพูดUDP segment UDP datagramฉันคิดว่าเป็นเพราะเราไม่แบ่งส่วนข้อมูล UDP (การแบ่งส่วนจะทำในชั้นการขนส่งเมื่อเราใช้ TCP)

การห่อหุ้มข้อมูลและสแต็กโปรโตคอล TCP / IP


ทุกคำอธิบายนี้ใช้สำหรับรูปแบบ TCP / IP, การบำรุงรักษาโดยIETF
ออกจากระบบ

8

TCP RFC ดั้งเดิมนั้นค่อนข้างคลุมเครือด้วยวิธีการใช้คำว่า "เซ็กเมนต์"

ในบางกรณีคำว่า "ส่วน" หมายถึงเฉพาะส่วนปัจจุบันของสตรีมข้อมูลแอปพลิเคชันที่กำลังส่งซึ่งไม่รวมส่วนหัว TCP ตัวอย่างเช่น TCP "ขนาดเซกเมนต์สูงสุด" (MSS) เป็นขนาดสูงสุดของกลุ่มข้อมูลแอปพลิเคชันในข้อความนี้ไม่นับส่วนหัว TCP

แต่ในกรณีอื่น ๆ คำว่า "ส่วน" รวมถึงข้อความ TCP ทั้งหมดรวมถึงส่วนหัว TCP ในความเป็นจริงอย่างน้อยหนึ่งกรณี spec ระบุถึงส่วน TCP ที่ไม่มีข้อมูลแอปพลิเคชัน (เช่น Acks ธรรมดา)

ข้อความ IP เดียวทั้งหมดคือ "ดาตาแกรม"

IP RFC ดั้งเดิมหมายถึงข้อความลิงค์เลเยอร์เป็น "แพ็คเก็ต" IP ดาตาแกรมสามารถแบ่งออกเป็น "แฟรกเมนต์" เพื่อให้พอดีกับขีด จำกัด ขนาดแพ็คเก็ตบนเครือข่ายแพ็กเก็ตขนาดเล็ก

เลเยอร์ลิงก์ IEEE 802.3 / Ethernet อ้างอิงถึงการส่งฟิสิคัลเลเยอร์ต่อเนื่องเป็น "แพกเก็ต" ส่วน data-link ของ MAC ของแพ็กเก็ตเรียกว่า "frame" เฟรมเริ่มต้นด้วยที่อยู่ MAC ปลายทางและลงท้ายด้วยลำดับการตรวจสอบเฟรม ส่วนของเฟรมที่อาจมี IP ดาตาแกรม (หรือส่วนของมัน) เรียกว่า "ฟิลด์ข้อมูลลูกค้า MAC"

ดังนั้นในทางเทคนิคแล้วไม่มีสิ่งเช่น "แพ็คเก็ต TCP" หรือ "แพ็คเก็ต IP" แพ็กเก็ตเป็นข้อกำหนดจากเลเยอร์ด้านล่าง IP TCP มี "เซกเมนต์" และ IP มี "ดาตาแกรม"


2

ส่วนหัวของ TCP หรือที่เรียกว่า "ส่วนหัวของส่วน" และส่วนของข้อมูลหรือข้อมูลหรือ "ส่วนข้อมูล" ทำขึ้นในส่วนของ TCP ที่มีขนาดแตกต่างกัน


2

TCP Segment นั้นเรียกว่า Datagram โดยทั่วไปเซกเมนต์หรือดาต้าเป็นแพ็คเก็ต เมื่อดาตาแกรมหรือแพ็คเก็ตถูกประมวลผลโดยเลเยอร์เครือข่ายจะเพิ่ม IP Header ให้กับข้อมูลและกลายเป็น IP Packet

Transport layer แบ่งข้อมูลออกเป็นหน่วยเล็ก ๆ ที่เรียกว่าเซ็กเมนต์ดาต้าแกรมหรือที่เรียกว่าแพ็คเก็ต แต่เรามักจะเรียกพวกเขาว่าเซ็กเมนต์


2

เซ็กเมนต์ tcp เป็นเพียงแนวคิดเท่านั้นมันแตกต่างกับการจัดเรียงข้อมูล ip

เมื่อคุณส่งข้อมูลที่มีขนาดใหญ่กว่า ip mtu มันจะใส่เข้าไปในหนึ่งแพ็คเก็ตไอพี แต่เลเยอร์ ip แล้วพบว่าแพ็กเก็ต ip นั้นยาวเกินกว่าที่จะส่ง, ดังนั้นมันจะแยกแพ็คเก็ตใหญ่ออกเป็นหลายชิ้นแต่ละอันมีเหมือนกัน ตัวระบุ แต่มีออฟเซ็ตและความยาวข้อมูลต่างกัน ฝ่ายรับรับผิดชอบในการเก็บรวบรวมชิ้นส่วนทั้งหมดหลังจากได้รับชิ้นส่วนทั้งหมดแล้วมันจะรวบรวมชิ้นส่วนทั้งหมดเป็นแพ็คเก็ต ip ทั้งหมดและผลักไปที่เลเยอร์โปรโตคอลด้านบน

แต่เลเยอร์ tcp มีพฤติกรรมที่แตกต่างกัน เมื่อคุณส่งข้อมูลที่มีขนาดใหญ่พอที่เลเยอร์ tcp จะไม่ใส่ข้อมูลลงในแพ็คเก็ต TCP หนึ่งแล้วแยกออกเป็นชิ้น ๆ (แต่ ip ไม่) มันดึงส่วนหนึ่งของข้อมูลดิบเป็นหนึ่งแพ็คเก็ต TCP แล้วผลักดัน tcp แพ็คเก็ตกับเลเยอร์ ip ความยาวของแพ็กเก็ต tcp ถูกกำหนดโดย mss หลังจากนั้นมันจะดึงข้อมูลส่วนที่เหลืออีกส่วนหนึ่งไปยังอีกแพ็คเก็ต TCP และทำซ้ำกระบวนการจนกว่าข้อมูลทั้งหมดจะถูกส่ง

หาก tcp ไม่ใช้ mss, มันน่ากลัว สมมติว่าคุณส่งข้อมูลที่มีขนาดใหญ่กว่า mss จะถูกใส่ลงใน tcp packet เพียงอันเดียว (ข้อมูลจะไม่แยกออกเป็นชิ้นเล็ก ๆ เนื่องจาก mss ไม่ได้ใช้), tcp packet ใหญ่กว่า ip mtu ดังนั้น ip จะแยก tcp ห่อเป็นชิ้น ๆ แพ็คเก็ต tcp จะส่งอีกครั้งหากชิ้นใดชิ้นหนึ่งหายไปเสียเวลาและแบนด์วิดธ์

ps: tcp_mss = ip_mtu - tcp_header


1

ส่วนหัวไม่ได้ประกอบด้วยกลุ่ม ส่วนหัวมีขนาดเท่ากันเสมอและต้องสมบูรณ์ มิฉะนั้นจะไม่สามารถถอดรหัสแพ็กเก็ตได้

สิ่งที่คุณอ้างถึงว่า "เซ็กเมนต์" คือ "แพ็คเก็ต" ทั้งหมดที่จะรวมกับผู้อื่นในภายหลังกับสตรีม TCP ดู:

โปรโตคอลควบคุมการส่งรับข้อมูลจากสตรีมข้อมูล 'แบ่งส่วน' เป็นชิ้น ๆ และเพิ่มส่วนหัว TCP สร้างเซ็กเมนต์ TCP


1

TCP ได้รับข้อมูลจากแอปพลิเคชันเลเยอร์และ 'สับ' ข้อมูลนี้เป็นหลายส่วนข้อมูล ชิ้นส่วนของข้อมูลต้นฉบับด้วยส่วนหัว TCP ที่เพิ่มเข้ามา ส่วนหนึ่งของส่วนหัวนี้คือหมายเลขลำดับที่ใช้โดยโปรโตคอล TCP ในการรับเพื่อวางเซกเมนต์ที่ได้รับทั้งหมด (ลบส่วนหัว) ในลำดับที่ถูกต้องและรวบรวมข้อมูลต้นฉบับซึ่งจะโอนไปยังชั้นแอปพลิเคชันอีกครั้ง .

ดังนั้นเพื่อตอบคำถามของคุณ; คำว่า 'แพ็กเก็ต TCP' ไม่มีอยู่จริง มันถูกเรียกว่า 'ส่วน' ซึ่งประกอบด้วยส่วนหัวและส่วนข้อมูล ส่วนหัวของตัวเองประกอบด้วย 'หลายฟิลด์' ซึ่งประกอบด้วยหมายเลขลำดับการตรวจสอบและหมายเลขพอร์ตต้นทางและปลายทาง


1

เมื่อคุณส่งข้อมูลที่คิดว่าการเชื่อมต่อ TCP จำนวนข้อมูลที่คุณส่งอาจเกินขนาดสูงสุดของไบต์ที่อนุญาตโดยการเชื่อมต่อในแพคเก็ตเดียว จำนวนนี้ "ขนาดเซกเมนต์สูงสุด" (เรียกอีกอย่างว่า MSS) คือ "เจรจา" (1) ณ เวลาเชื่อมต่อระหว่างจุดปลาย TCP สองจุด (ไคลเอนต์และเซิร์ฟเวอร์) โปรโตคอล OSI ระดับ 4 TCP เป็นผู้รับผิดชอบในการกระจาย / รวบรวม หมายความว่าสตรีมข้อมูลของคุณแบ่งออกเป็นส่วนเล็ก ๆ (เรียกว่าเซ็กเมนต์) และส่งแยกกันผ่านเครือข่าย อีกด้านหนึ่งเลเยอร์ TCP มีหน้าที่รวบรวมแพ็คเก็ตใหม่ในลำดับที่ถูกต้องในการปฏิรูปสตรีมเหมือนถูกส่ง ไม่มีอะไรสามารถบอกคุณได้ว่ากลุ่มจะมาถึงที่ปลายทางในลำดับเดียวกันกว่าที่ออกเดินทาง นั่นเป็นเหตุผลที่หมายเลขแพ็กเก็ต มากกว่า, แพ็คเก็ตได้รับการยอมรับทีละคน (2) โดยผู้รับ แต่บางครั้งแพ็คเก็ตอาจหายไป จากนั้น ACK จะไม่ถูกส่งคืนจากปลายทางของแพ็กเก็ตไปยังตัวปล่อย จากนั้นตัวปล่อยควรส่งอีกครั้ง (นั่นคือบทบาทของ TCP) บางครั้งแพ็กเก็ตจะได้รับอย่างถูกต้อง แต่ตัวส่งไม่ได้รับจากตัวส่งสัญญาณ (แพ็กเก็ตที่หายไปอีกครั้ง) ในกรณีเช่นนี้ผู้ปล่อยจะส่งอีกครั้ง แต่ผู้รับเห็นว่าได้รับแล้ว (นั่นคือแพ็คเก็ต Dup) และกำจัดมัน แต่ส่งอีกครั้งส่งไปยังผู้ส่ง

เพื่อปรับปรุงทรูพุตอีซีแอลสามารถส่งแพ็กเก็ตได้หลายชุดและไม่ต้องรอแอคก่อนหน้าเพื่อส่งแพ็กเก็ตถัดไป มันยังเป็นส่วนหนึ่งของโปรโตคอล TCP และเรียกว่าหน้าต่างบานเลื่อน จำนวนของแพ็กเก็ตที่ส่งที่ค้างอยู่สำหรับ ack นั้นมี จำกัด

(1) โดยข้อเท็จจริงแล้วไม่มีการเจรจาเลยจุดสิ้นสุดแต่ละจุดจะบอกขนาดสูงสุดที่สามารถจัดการได้ ค่านี้ไม่รวม 20 ไบต์ของส่วนหัว IP ไม่รวม 20 ไบต์ของส่วนหัว TCP (2) หลาย ๆ แพ็กเก็ตสามารถรับทราบโดย ACK เดี่ยว

โปรดทราบว่าดาตาแกรมเป็นข้อมูลที่ห่อหุ้มที่ส่งบนเครือข่าย IP หรือใช้โปรโตคอลน้อยกว่าการเชื่อมต่อเช่น UDP แพ็คเก็ตเป็นข้อมูลที่ห่อหุ้มสำหรับโปรโตคอลที่มุ่งเน้นการเชื่อมต่อเช่น TCP กลุ่มเป็นส่วนหนึ่งของสตรีมข้อมูลที่ส่งบน TCP ดูW.Richard Stevens "TCP / IP illustrated" เพื่อให้คำอธิบายที่ดีกว่าของสิ่งนี้ทั้งหมด


0

TCP เซ็กเมนต์คือแพ็กเก็ต เซ็กเมนต์เป็นเพียงส่วนหนึ่งของสตรีมการเชื่อมต่อ TCP ระหว่างคอมพิวเตอร์สองเครื่อง ดาต้าเป็น "แพ็คเก็ต" ในเงื่อนไข UDP


0

แพ็คเก็ต IP ประกอบด้วยส่วนหัว IP พร้อมแนบข้อมูล ข้อมูลเป็นส่วนหัว TCP และส่วนของข้อมูลแอปพลิเคชันที่เรียกว่า TCP Segment TCP Segement คือสิ่งที่คุณมักจะเรียกว่า TCP Packet


0

คำว่า "ทั่วไป" สำหรับสิ่งนี้คือหน่วยข้อมูลโพรโทคอลหรือ PDU

LAYER # - OSI NAME     - COMMON PROTOCOL OR USE - PDU NAME
-------   ------------   ----------------------   --------------------------
Layer 1 - Physical     - Transceiver            - bits, or a physical signal
Layer 2 - Datalink     - Ethernet               - frame
Layer 3 - Network      - IP                     - packet
Layer 4 - Transport    - TCP                    - segment
Layer 5 - Session      - SIP                    - data, request, or response
Layer 6 - Presentation - Encryption/compression - data, request, or response
Layer 7 - Application  - HTTP                   - data, request, or response

สิ่งที่ไม่ชัดเจนกับโปรโตคอลเฉพาะจากเลเยอร์ 4 และสูงกว่า (ตัวอย่างเช่นจนถึงทุกวันนี้ฉันไม่รู้อะไรเลยว่าเป็นโปรโตคอลเซสชันจริง ๆ และจริงๆแล้วมันก็ไม่ได้มีอะไรที่เหมือนกับโปรโตคอล "การนำเสนอ" ทั่วไป แต่มันเป็นเลเยอร์ที่เกือบจะแยกจากกันในซอฟต์แวร์ / การสื่อสารจำนวนมาก)

นอกจากนี้ตามที่กล่าวไว้ก่อนหน้า PDU แต่ละรายการมีส่วนหัวที่แตกต่างจากส่วนของข้อมูลหรือข้อมูล ส่วนหัวมีข้อมูลเกี่ยวกับข้อมูลและอาจเป็นการตรวจสอบสำหรับการตรวจสอบในส่วนอื่น ๆ


ไม่ใช้งาน TPDU แทนเลเยอร์ชั้นบนใช่หรือไม่ ดูbooks.google.de/books?id=daqV_KzkoSIC&pg=PA147
Janus Troelsen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.