您的位置:首页 > 理论基础 > 计算机网络

Tcp协议之三次握手四次挥手学习一

2018-02-27 15:32 429 查看
一、分层

网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合。

TCP/IP通常被认为是一个四层协议系统,

如图所示: TCP/IP协议族的四个层次



每一层分不同功能:

    链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任

何传输媒介)的物理接口细节。

    网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),

ICMP协议(Internet互联网控制报文协议),ARP协议(地址解析协议)、RARP(反向地址解析协议)以及IGMP协议(Internet组管理协议)。

    运输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:

TCP(传输控制协议)和UDP(用户数据报协议)

    应用层负责处理特定的应用程序细节。几乎各种不同的TCP/IP实现都会提供下面这些通用的应用程序:

        • Telnet远程登录。

         • FTP文件传输协议。

         • SMTP简单邮件传送协议。

         • SNMP简单网络管理协议。

二、TCP协议

        尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。TCP提供一种面向连接的、可靠的字节流服务。

        面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。这个链接过程就是三次握手确定一个TCP连接。过程如下图所示



两个序号和三个标志位:

  (1)序号:seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。

  (2)确认序号:ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1。

  (3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:

  (A)URG:紧急指针(urgent pointer)有效。

  (B)ACK:确认序号有效。

  (C)PSH:接收方应该尽快将这个报文交给应用层。

  (D)RST:重置连接。

  (E)SYN:发起一个新连接。

  (F)FIN:释放一个连接。请求端(通常称为客户)发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号。这个SYN段为报文段1。

tcp三次握手的具体过程如下:

1、请求端(通常称为客户)发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号。这个SYN段为报文段1。
2、服务器发回包含服务器的初始序号的SYN报文段(报文段2)作为应答。同时,将确认序号设置为客户的sql加1以对客户的  SYN报文段进行确认。一个SYN将占用一个序号。
3、客户必须将确认序号设置为服务器的seq加1以对服务器的SYN报文段进行确认(报文段3)。

这三个报文段完成连接的建立。这个过程也称为三次握手(three-way handshake)

使用WireShark抓包工具可以抓取tcp连接建立的具体过程,如下图。

图tcp1



图tcp2



图tcp3



图tcp4



图tcp1所示为一个完整的tcp建立连接的过程,首先我们看到ip为10.240.160.94的客户端先发送一个SYN报文段,SYN标志为1,seq=0,具体展开如图tcp2所示,接着ip为10.240.160.99的服务端发送一个SYN、ACK报文段,SYN、ACK标志为1,seq=0,ack=1,具体见图tcp3,最后ip为10.240.160.94的客户端发送一个ACK报文段,ACK标志为1,seq=1,ack=1,具体见图tcp4。到此一个tcp连接已经建立完毕。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息