คำอธิบายของ Handshake วิธีการสามผ่าน TCP/IP

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 172983 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความนี้มีไว้สำหรับผู้ชมที่คุ้นเคยกับการรับส่งควบคุม/อินเทอร์เน็ตโพรโทคอลโพรโทคอล (TCP/IP) และอธิบายถึงกระบวนการของ handshake วิธีการสาม TCP ที่เกิดขึ้นระหว่างไคลเอนต์และเซิร์ฟเวอร์เมื่อเริ่มต้น หรือหยุดการเชื่อมต่อ TCP

สำหรับข้อมูลเพิ่มเติมบน TCP/IP โปรดดูสีขาวกระดาษดังต่อไปนี้ที่พร้อมใช้งานบนเซิร์ฟเวอร์ ftp แบบไม่ระบุชื่อของ Microsoft:
ชื่อของแฟ้ม: Tcpipimp2.doc
ตำแหน่ง::ftp://ftp.microsoft.com/bussys/winnt/winnt-docs/papers/" Microsoft Windows NT 3.5/3.51/4.0: การใช้งาน TCP/IP รายละเอียดกองโพรโทคอล TCP/IP และบริการ รุ่น 2.0 "

ข้อมูลเพิ่มเติม

ดับโพรโทคอลการควบคุมการรับส่ง (TCP) ของโพรโทคอล TCP/IP ขนส่งสินค้าจะเป็นการเชื่อมต่อ หมายเป็นการเชื่อมต่อความว่า ก่อนที่สามารถถูกส่งผ่านข้อมูล การเชื่อมต่อที่เชื่อถือได้ต้องได้รับ และตอบรับ การส่งข้อมูลระดับ tcp สร้างจะเชื่อมต่อ และสิ้นสุดของการเชื่อมต่อรักษาพารามิเตอร์การควบคุมเฉพาะที่ควบคุมกระบวนการทั้งหมด บิตควบคุมจะแสดงรายการต่อไปนี้:
URG: ตัวชี้ด่วนฟิลด์สำคัญ
ACK: รับรองฟิลด์สำคัญ
PSH: ฟังก์ชันกด
RST: ตั้งค่าการเชื่อมต่อใหม่
SYN: หมายเลขลำดับการซิงโครไนซ์
FIN: ไม่มีข้อมูลเพิ่มเติมจากผู้ส่ง
มีสถานการณ์ที่สองซึ่ง handshake เป็นวิธีการสามจะเกิดขึ้น:
  • สร้างการเชื่อมต่อ (ใช้งานอยู่เปิด)
  • หยุดการเชื่อมต่อ (ใช้งานอยู่ปิด)
ข้อมูลตัวอย่างต่อไปนี้ไม่ได้รับมาจากการจับภาพการตรวจสอบเครือข่าย การตรวจสอบเครือข่ายเป็นตัววิเคราะห์คำโพรโทคอลที่สามารถได้รับจากเซิร์ฟเวอร์การจัดการระบบ Microsoft

การสร้างการเชื่อมต่อ

ลำดับต่อไปนี้แสดงขั้นตอนของการเชื่อมต่อ TCP จะสร้าง:

เฟรมที่ 1:

ตามที่คุณเห็นในกรอบแรก ไคลเอนต์ NTW3 ส่ง SYN เซ็กเมนต์ (TCP.... S.) การร้องขอไปยังเซิร์ฟเวอร์เพื่อซิงโครไนส์หมายเลขลำดับอยู่ จะระบุการเริ่มต้นเลขลำดับ (ISN), ซึ่งเป็น incremented ด้วย 1, 8221821 + 1 = 8221822 และที่ถูกส่งไปยังเซิร์ฟเวอร์ ทำข้อมูลให้เตรียมใช้งานการเชื่อมต่อ ไคลเอนต์และเซิร์ฟเวอร์ต้องตรงกันของลำดับหมายเลข ไม่มีตัวเลือกสำหรับการสูงสุดหน้าต่างเซ็กเมนต์ขนาด (MSS) เพื่อที่ถูกตั้งค่า ซึ่งกำหนด โดยความยาว (len: 4) ขนาดเซ็กเมนต์ที่สูงสุดที่ผู้ส่งที่ต้องการที่ได้รับการสื่อสารอ็อพชันนี้ ฟิลด์การรับรอง (ack: 0) ถูกตั้งค่าเป็นศูนย์ได้เนื่องจากเป็นส่วนแรกของ handshake วิธีการสาม
1    2.0785 NTW3 --> BDC3 TCP ....S., len: 4, seq: 8221822-8221825, ack: 0,
win: 8192, src: 1037  dst:  139 (NBT Session)  NTW3 -->  BDC3 IP

TCP: ....S., len: 4, seq: 8221822-8221825, ack: 0, win: 8192, src: 1037
dst:  139 (NBT Session)

   TCP: Source Port = 0x040D
   TCP: Destination Port = NETBIOS Session Service
   TCP: Sequence Number = 8221822 (0x7D747E)
   TCP: Acknowledgement Number = 0 (0x0)
   TCP: Data Offset = 24 (0x18)
   TCP: Reserved = 0 (0x0000)
   TCP: Flags = 0x02 : ....S.

      TCP: ..0..... = No urgent data
      TCP: ...0.... = Acknowledgement field not significant
      TCP: ....0... = No Push function
      TCP: .....0.. = No Reset
      TCP: ......1. = Synchronize sequence numbers
      TCP: .......0 = No Fin

   TCP: Window = 8192 (0x2000)
   TCP: Checksum = 0xF213
   TCP: Urgent Pointer = 0 (0x0)
   TCP: Options

         TCP: Option Kind (Maximum Segment Size) = 2 (0x2)
         TCP: Option Length = 4 (0x4)
         TCP: Option Value = 1460 (0x5B4)

   TCP: Frame Padding

00000:  02 60 8C 9E 18 8B 02 60 8C 3B 85 C1 08 00 45 00   .`.....`.;....E.
00010:  00 2C 0D 01 40 00 80 06 E1 4B 83 6B 02 D6 83 6B   .,..@....K.k...k
00020:  02 D3 04 0D 00 8B 00 7D 74 7E 00 00 00 00 60 02   .......}t~....`.
00030:  20 00 F2 13 00 00 02 04 05 B4 20 20                .........
				
เฟรมที่ 2:

ในเฟรมที่สอง เซิร์ฟเวอร์ BDC3 ส่งการ ACK และ SYN แบบในเซ็กเมนต์นี้ (TCP A.S.) ไว้ในเซ็กเมนต์นี้ เซิร์ฟเวอร์เป็น acknowledging ร้องขอของไคลเอ็นต์สำหรับการทำข้อมูลให้ตรงกัน ในเวลาเดียวกัน เซิร์ฟเวอร์จะยังส่งการร้องขอของไคลเอ็นต์สำหรับการซิงโครไนส์หมายเลขลำดับของ ไม่มีความแตกต่างที่สำคัญของหนึ่งในเซ็กเมนต์นี้ เซิร์ฟเวอร์ส่งการตอบรับจำนวน (8221823) ไปยังไคลเอนต์ การรับรองคือ proof เช่นเดียวกับไคลเอนต์ที่ ACK อยู่เฉพาะกับ SYN ไคลเอนต์เริ่มต้น กระบวนการ acknowledging การร้องขอของไคลเอ็นต์อนุญาตให้เซิร์ฟเวอร์ที่จะเพิ่มหมายเลขลำดับของไคลเอ็นต์ โดยหนึ่ง และใช้เป็นหมายเลขการรับรอง
2   2.0786 BDC3 --> NTW3  TCP .A..S., len: 4, seq: 1109645-1109648, ack:
8221823, win: 8760, src: 139 (NBT Session)  dst: 1037 BDC3 --> NTW3  IP

TCP: .A..S., len:    4, seq:   1109645-1109648, ack:   8221823, win: 8760,
src:  139 (NBT Session)  dst: 1037

   TCP: Source Port = NETBIOS Session Service
   TCP: Destination Port = 0x040D
   TCP: Sequence Number = 1109645 (0x10EE8D)
   TCP: Acknowledgement Number = 8221823 (0x7D747F)
   TCP: Data Offset = 24 (0x18)
   TCP: Reserved = 0 (0x0000)
   TCP: Flags = 0x12 : .A..S.

      TCP: ..0..... = No urgent data
      TCP: ...1.... = Acknowledgement field significant
      TCP: ....0... = No Push function
      TCP: .....0.. = No Reset
      TCP: ......1. = Synchronize sequence numbers
      TCP: .......0 = No Fin

   TCP: Window = 8760 (0x2238)
   TCP: Checksum = 0x012D
   TCP: Urgent Pointer = 0 (0x0)
   TCP: Options

         TCP: Option Kind (Maximum Segment Size) = 2 (0x2)
         TCP: Option Length = 4 (0x4)
         TCP: Option Value = 1460 (0x5B4)

   TCP: Frame Padding

00000:  02 60 8C 3B 85 C1 02 60 8C 9E 18 8B 08 00 45 00   .`.;...`......E.
00010:  00 2C 5B 00 40 00 80 06 93 4C 83 6B 02 D3 83 6B   .,[.@....L.k...k
00020:  02 D6 00 8B 04 0D 00 10 EE 8D 00 7D 74 7F 60 12   ...........}t`.
00030:  22 38 01 2D 00 00 02 04 05 B4 20 20               "8.-......
				
เฟรมที่ 3:

ในกรอบสาม ไคลเอนต์ส่ง ACK มีในเซ็กเมนต์นี้ (TCP A....) ในเซ็กเมนต์นี้ ไคลเอนต์จะ acknowledging ร้องขอจากเซิร์ฟเวอร์สำหรับการซิงโครไนส์ ไคลเอ็นต์ใช้อัลกอริธึมเดียวกันกับเซิร์ฟเวอร์ที่นำมาใช้ในการใส่หมายเลขการรับรอง ยอมรับของไคลเอ็นต์ของการร้องขอของเซิร์ฟเวอร์สำหรับการซิงโครไนส์เสร็จสิ้นกระบวนการสร้างการเชื่อมต่อความน่าเชื่อถือ ซึ่ง handshake วิธีการสาม
3   2.787 NTW3 --> BDC3  TCP .A...., len: 0, seq: 8221823-8221823, ack:
1109646, win: 8760, src: 1037  dst:  139 (NBT Session)  NTW3 --> BDC3  IP

TCP: .A...., len:    0, seq:   8221823-8221823, ack:   1109646, win: 8760,
src: 1037  dst:  139 (NBT Session)

   TCP: Source Port = 0x040D
   TCP: Destination Port = NETBIOS Session Service
   TCP: Sequence Number = 8221823 (0x7D747F)
   TCP: Acknowledgement Number = 1109646 (0x10EE8E)
   TCP: Data Offset = 20 (0x14)
   TCP: Reserved = 0 (0x0000)
   TCP: Flags = 0x10 : .A....

      TCP: ..0..... = No urgent data
      TCP: ...1.... = Acknowledgement field significant
      TCP: ....0... = No Push function
      TCP: .....0.. = No Reset
      TCP: ......0. = No Synchronize
      TCP: .......0 = No Fin

   TCP: Window = 8760 (0x2238)
   TCP: Checksum = 0x18EA
   TCP: Urgent Pointer = 0 (0x0)
   TCP: Frame Padding

00000:  02 60 8C 9E 18 8B 02 60 8C 3B 85 C1 08 00 45 00   .`.....`.;....E.
00010:  00 28 0E 01 40 00 80 06 E0 4F 83 6B 02 D6 83 6B   .(..@....O.k...k
00020:  02 D3 04 0D 00 8B 00 7D 74 7F 00 10 EE 8E 50 10   .......}t....P.
00030:  22 38 18 EA 00 00 20 20 20 20 20 20               "8....
				

หยุดการเชื่อมต่อ

แม้ว่า handshake วิธีการสามเท่านั้นต้องมีแพคเก็ตที่สามเพื่อที่ถูกส่งผ่านสื่อเครือข่ายของบริษัท สิ้นสุดของการเชื่อมต่อนี้เชื่อถือได้จะ necessitate ส่งข้อมูลของแพคเก็ตที่สี่ เนื่องจากมีการเชื่อมต่อ TCP เพล็กซ์เต็ม (นั่นคือ ข้อมูลสามารถถูก flowing ในแต่ละทิศทางที่เกี่ยวข้องกับอีก), แต่ละทิศทางต้องถูกหยุดการทำงานอย่างอิสระได้

เฟรมที่ 4:

คุณเห็นไคลเอนต์ส่ง FIN ที่ขณะ โดย ACK ข้อในส่วนนี้ของเฟรม (TCP A...F) ส่วนนี้มีสองฟังก์ชันพื้นฐาน แรก เมื่อมีการตั้งค่าพารามิเตอร์ FIN มันจะแจ้งเซิร์ฟเวอร์ดังกล่าวยังไม่มีข้อมูลเพิ่มเติมในการส่ง ประการที่สอง ACK ไม่จำเป็นในการระบุการเชื่อมต่อเฉพาะที่จะสร้าง
4   16.0279 NTW3 --> BDC3 TCP .A...F, len: 0, seq: 8221823-8221823,
ack:3462835714, win: 8760, src: 2337  dst: 139 (NBT Session)  NTW3 --> BDC3
IP

TCP: .A...F, len:   0, seq: 8221823-8221823, ack:  1109646, win: 8760, src:
1037  dst:  139 (NBT Session)

   TCP: Source Port = 0x040D
   TCP: Destination Port = NETBIOS Session Service
   TCP: Sequence Number = 8221823 (0x7D747F)
   TCP: Acknowledgement Number = 1109646 (0x10EE8E)
   TCP: Data Offset = 20 (0x14)
   TCP: Reserved = 0 (0x0000)
   TCP: Flags = 0x11 : .A...F

      TCP: ..0..... = No urgent data
      TCP: ...1.... = Acknowledgement field significant
      TCP: ....0... = No Push function
      TCP: .....0.. = No Reset
      TCP: ......0. = No Synchronize
      TCP: .......1 = No more data from sender

   TCP: Window = 8760 (0x2238)
   TCP: Checksum = 0x236C
   TCP: Urgent Pointer = 0 (0x0)

00000:  00 20 AF 47 93 58 00 A0 C9 22 F5 39 08 00 45 00   . .G.X...".9..E.
00010:  00 28 9B F5 40 00 80 06 21 4A C0 5E DE 7B C0 5E   .(..@...!J.^.{.^
00020:  DE 57 09 21 05 48 0B 20 96 AC CE 66 AE 02 50 11   .W.!.H. ...f..P.
00030:  22 38 23 6C 00 00                                 "8#l..
				
เฟรมที่ 5:

ในเฟรมนี้ คุณไม่เห็นสิ่งพิเศษยกเว้นสำหรับเซิร์ฟเวอร์ acknowledging FIN ที่ถูกส่งผ่านจากไคลเอ็นต์
5    16.0281 BDC3 --> NTW3 TCP .A...., len:    0, seq: 1109646-1109646,
ack: 8221824, win:28672, src: 139  dst: 2337 (NBT Session) BDC3 -->  NTW3
IP

TCP: .A...., len:    0, seq: 1109646-1109646, ack: 8221824, win:28672, src:
139  dst: 2337 (NBT Session)

   TCP: Source Port = 0x040D
   TCP: Destination Port = NETBIOS Session Service
   TCP: Sequence Number = 1109646 (0x10EE8E)
   TCP: Acknowledgement Number = 8221824 (0x7D7480)
   TCP: Data Offset = 20 (0x14)
   TCP: Reserved = 0 (0x0000)
   TCP: Flags = 0x10 : .A....

      TCP: ..0..... = No urgent data
      TCP: ...1.... = Acknowledgement field significant
      TCP: ....0... = No Push function
      TCP: .....0.. = No Reset
      TCP: ......0. = No Synchronize
      TCP: .......0 = No Fin

   TCP: Window = 28672 (0x7000)
   TCP: Checksum = 0xD5A3
   TCP: Urgent Pointer = 0 (0x0)
   TCP: Frame Padding

00000:  00 A0 C9 22 F5 39 08 00 02 03 BA 84 08 00 45 00   ...".9........E.
00010:  00 28 D2 82 00 00 3F 06 6B BD C0 5E DE 57 C0 5E   .(....?.k..^.W.^
00020:  DE 7B 05 48 09 21 CE 66 AE 02 0B 20 96 AD 50 10   .{.H.!.f... ..P.
00030:  70 00 D5 A3 00 00 90 00 01 00 86 00               p...........
				
เฟรมที่ 6:

หลังจากได้รับการ FIN จากไคลเอ็นต์คอมพิวเตอร์ เซิร์ฟเวอร์จะ ACK. ถึงแม้ว่า TCP ได้สร้างการเชื่อมต่อระหว่างคอมพิวเตอร์สองเครื่อง เชื่อมต่อที่ไม่เกี่ยวข้องกับยังคงของอีกรายการหนึ่ง ดังนั้น เซิร์ฟเวอร์ต้องยังส่งแบบ FIN (TCP A...F) ไปยังไคลเอ็นต์
6   17.0085 BDC3 --> NTW3 TCP .A...F, len: 0, seq: 1109646-1109646, ack:
8221824, win:28672, src: 139 dst: 2337 (NBT Session) BDC3 -->  NTW3   IP

TCP: .A...F, len:  0, seq: 1109646-1109646, ack: 8221824, win:28672, src:
139  dst: 2337 (NBT Session)

   TCP: Source Port = 0x0548
   TCP: Destination Port = 0x0921
   TCP: Sequence Number = 1109646 (0x10EE8E)
   TCP: Acknowledgement Number = 8221824 (0x7D7480)
   TCP: Data Offset = 20 (0x14)
   TCP: Reserved = 0 (0x0000)
   TCP: Flags = 0x11 : .A...F

      TCP: ..0..... = No urgent data
      TCP: ...1.... = Acknowledgement field significant
      TCP: ....0... = No Push function
      TCP: .....0.. = No Reset
      TCP: ......0. = No Synchronize
      TCP: .......1 = No more data from sender

   TCP: Window = 28672 (0x7000)
   TCP: Checksum = 0xD5A2
   TCP: Urgent Pointer = 0 (0x0)
   TCP: Frame Padding

00000:  00 A0 C9 22 F5 39 08 00 02 03 BA 84 08 00 45 00   ...".9........E.
00010:  00 28 D2 94 00 00 3F 06 6B AB C0 5E DE 57 C0 5E   .(....?.k..^.W.^
00020:  DE 7B 05 48 09 21 CE 66 AE 02 0B 20 96 AD 50 11   .{.H.!.f... ..P.
00030:  70 00 D5 A2 00 00 02 04 05 B4 86 00               p...........
				
เฟรมที่ 7:

ไคลเอ็นต์การตอบสนองในรูปแบบเดียวกันเป็นเซิร์ฟเวอร์ โดย ACKing FIN ของเซิร์ฟเวอร์และ incrementing หมายเลขลำดับ ด้วย 1
7   17.0085 NTW3 --> BDC3 TCP .A...., len: 0, seq: 8221824-8221824, ack:
1109647, win: 8760, src: 2337  dst: 139 (NBT Session) NTW3 --> BDC3 IP

TCP: .A...., len:    0, seq: 8221824-8221824, ack: 1109647, win: 8760, src:
2337  dst: 139   (NBT Session)

   TCP: Source Port = 0x0921
   TCP: Destination Port = 0x0548
   TCP: Sequence Number = 8221824 (0x7D7480)
   TCP: Acknowledgement Number = 1109647 (0x10EE8F)
   TCP: Data Offset = 20 (0x14)
   TCP: Reserved = 0 (0x0000)
   TCP: Flags = 0x10 : .A....

      TCP: ..0..... = No urgent data
      TCP: ...1.... = Acknowledgement field significant
      TCP: ....0... = No Push function
      TCP: .....0.. = No Reset
      TCP: ......0. = No Synchronize
      TCP: .......0 = No Fin

   TCP: Window = 8760 (0x2238)
   TCP: Checksum = 0x236B
   TCP: Urgent Pointer = 0 (0x0)

00000:  00 20 AF 47 93 58 00 A0 C9 22 F5 39 08 00 45 00   . .G.X...".9..E.
00010:  00 28 BA F5 40 00 80 06 02 4A C0 5E DE 7B C0 5E   .(..@....J.^.{.^
00020:  DE 57 09 21 05 48 0B 20 96 AD CE 66 AE 03 50 10   .W.!.H. ...f..P.
00030:  22 38 23 6B 00 00                                 "8#k..
				
ไคลเอ็นต์ ACKing การแจ้งเตือน FIN จากเซิร์ฟเวอร์ที่ระบุเป็นการเชื่อมต่อ TCP ปิด graceful

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการ ICMP:
Please see the following article in the Microsoft Knowledge Base:
170292อินเทอร์เน็ตการขั้นพื้นฐานโพรโทคอล (ICMP) ของตัวควบคุมข้อความ
หรือ
Obtain RFC 793.
RFCs may be obtained through the Internet as follows:

Paper copies of all RFCs are available from the NIC, either individually or on a subscription basis (for more information contact NIC@NIC.DDN.MIL). Online copies are available through FTP or Kermit from NIC.DDN.MIL as rfc/rfc####.txt or rfc/rfc####.PS (#### is the RFC number without leading zeros).

คุณสมบัติ

หมายเลขบทความ (Article ID): 172983 - รีวิวครั้งสุดท้าย: 24 กันยายน 2554 - Revision: 6.0
ใช้กับ
  • Windows Server 2008 Standard
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Datacenter
  • Windows Server 2008 for Itanium-Based Systems
  • Microsoft Windows Server 2003 Datacenter Edition
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows XP Professional Edition
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Tablet PC Edition
  • Microsoft Windows XP Media Center Edition 2005 Update Rollup 2
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Server
  • Windows Vista Business
  • Windows Vista Business 64-bit edition
  • Windows Vista Enterprise
  • Windows Vista Enterprise 64-bit edition
  • Windows Vista Home Basic
  • Windows Vista Home Basic 64-bit edition
  • Windows Vista Home Premium
  • Windows Vista Home Premium 64-bit edition
  • Windows Vista Ultimate
  • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 R2 Standard
  • Windows Web Server 2008 R2
  • Windows 7 Enterprise
  • Windows 7 Home Basic
  • Windows 7 Home Premium
  • Windows 7 Professional
  • Windows 7 Ultimate
Keywords: 
kbinfo kbnetwork kbmt KB172983 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:172983

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com