TCP/IP를 통한 세 방향 핸드셰이크에 대한 설명

기술 자료 번역 기술 자료 번역
기술 자료: 172983 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서는 TCP/IP를 잘 알고 있는 독자를 위한 것이며 TCP 연결을 시작하거나 종료할 때 클라이언트와 서버 사이에서 발생하는 TCP 세 방향 핸드셰이크의 프로세스를 설명합니다.

추가 정보

TCP/IP 전송 프로토콜의 전송 제어 프로토콜(TCP) 수준은 연결 지향입니다. 연결 지향이란 데이터를 전송하기 전에 신뢰성 있는 연결을 얻고 응답해야 하는 것을 의미합니다. TCP 수준 데이터 전송, 연결 설정 및 연결 종료는 전체 프로세스를 제어하는 특정 제어 매개 변수를 유지합니다. 제어 비트는 다음과 같습니다.
URG: 긴급한 지점 유효 필드
ACK: 응답 유효 필드
PSH: 밀어넣기(Push) 기능
RST: 연결 재설정
SYN: 시퀀스 번호 동기화
FIN: 보낸 사람으로부터 더 이상의 데이터 없음
세 방향 핸드셰이크가 발생하는 시나리오는 두 가지가 있습니다.
  • 연결 설정(활성 열기)
  • 연결 종료(활성 닫기)
다음 예제 정보는 네트워크 모니터 캡처에서 얻은 것입니다. 네트워크 모니터는 Microsoft Systems Management Server에서 얻을 수 있는 프로토콜 분석기입니다.

연결 설정

다음 시퀀스는 설정 중인 TCP 연결의 프로세스를 보여줍니다.

프레임 1:

첫 번째 프레임에서 볼 수 있듯이 클라이언트 NTW3은 SYN 세그먼트(TCP ....S.)를 보냅니다. 이것은 시퀀스 번호 동기화를 서버에 요청하며 1씩 증가(8221821+1=8221822)되고 서버로 보내지는 초기 시퀀스 번호(ISN)를 지정합니다. 연결을 초기화하려면 클라이언트와 서버가 서로의 시퀀스 번호를 동기화해야 합니다. 또한 최대 세그먼트 크기(MSS)를 설정하는 옵션도 있습니다. 이것은 길이로 정의됩니다(len: 4). 이 옵션은 보낸 사람이 받으려고 하는 최대 세그먼트 크기를 알려줍니다. 응답 필드(ack: 0)는 세 방향 핸드셰이크의 첫 번째 부분이기 때문에 0으로 설정됩니다.
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.)을 보냅니다. 이 세그먼트에서 서버는 동기화를 위한 클라이언트의 요청을 응답합니다. 동시에 서버는 시퀀스 번호의 동기화를 위해 클라이언트에도 요청을 보냅니다. 이 세그먼트에는 한 가지 중요한 차이점이 있습니다. 서버는 클라이언트에 응답 번호(8221823)를 전송합니다. 응답은 ACK가 클라이언트에서 시작한 SYN과 관련이 있음을 클라이언트에 증명하는 것일 뿐입니다. 클라이언트 요청을 응답하는 프로세스를 사용하면 서버가 클라이언트의 시퀀스 번호를 1씩 증가시키고 이것을 응답 번호로 사용할 수 있습니다.
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 (0x7D747E)
   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....)를 보냅니다. 이 세그먼트에서 클라이언트는 동기화를 위한 서버의 요청을 응답합니다. 클라이언트는 응답 번호를 제공하는 데 서버에서 구현되는 동일한 알고리즘을 사용합니다. 동기화를 위한 서버의 요청을 클라이언트가 응답하면 신뢰성 있는 연결을 설정하는 프로세스가 완료되므로 이런 식으로 세 방향 핸드셰이크가 이루어집니다.
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....
				

연결 종료

세 방향 핸드셰이크는 네트워크로 연결된 미디어를 통해 세 개의 패킷만 전송하면 되지만 이 신뢰성 있는 연결을 종료하려면 네 개의 패킷을 전송해야 합니다. TCP 연결은 데이터가 서로에 관계 없이 각 방향으로 흐를 수 있는 전이중이기 때문에 각 방향으로 개별적으로 전송해야 합니다.

프레임 4:

프레임의 이 세션에서는 ACK와 함께 FIN(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:

이 프레임에서는 클라이언트에서 전송한 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:

클라이언트는 서버의 FIN을 응답하고 시퀀스 번호를 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..
				
서버에서 FIN 알림을 응답하는 클라이언트는 TCP 연결의 두 단계 닫기 작업(graceful)을 식별합니다.

참조

ICMP에 대한 자세한 내용은
Microsoft 기술 자료의 다음 문서를 참조하십시오.
170292 ICMP(Internet Control Message Protocol)에 대한 기본 사항
또는
RFC 793을 구하십시오.
RFC는 다음과 같이 인터넷을 통해 구할 수 있습니다.

모든 RFC의 문서 복사본은 개별적으로 또는 등록하여 NIC로부터 구할 수 있습니다. 자세한 내용은 NIC@NIC.DDN.MIL에 문의하십시오. 온라인 복사본은 FTP 또는 NIC.DDN.MIL의 Kermit을 통해 rfc/rfc####.txt 또는 rfc/rfc####.PS(####은 앞에 0이 없는 RFC 번호)로 구할 수 있습니다.



Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.
참고 이것은 Microsoft 기술 지원 서비스 내에서 직접 작성한 “빠른 게시” 문서입니다. 여기에 포함된 정보는 발생한 문제에 대해 있는 그대로 제공됩니다. 이 문서는 즉시 참조할 수 있도록 빠르게 작성되어서 표기상의 오류가 포함되어 있을 수 있고 언제든지 예고 없이 수정될 수 있습니다. 기타 고려 사항은사용 약관을 참조하십시오. 정보

속성

기술 자료: 172983 - 마지막 검토: 2011년 5월 17일 화요일 - 수정: 3.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 (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows XP Professional
  • 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
키워드:?
kbinfo kbnetwork KB172983

피드백 보내기

 

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