TCP/IP协议

作者: zhaochenxi 分类: 网络 发布时间: 2017-05-04 23:43

传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。 在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。

TCP/IP协议分层

如图所示,这个协议模型分为四层,从上到下分别为应用层,传输层,网络层,网络接口层。

应用层:这一层包含了http,ftp,telnet,email,dns等应用协议,负责传送各种最终形态的数据,直接与用户打交道,用户能够感知到的也就这一层了。

传输层:提供应用程序间的通信,将应用层的数据进行封装,加上TCP报头形成TCP段,递交给网络层,

网络层:负责两个计算机之间的通讯。

1.处理来之传输层的请求,将TCP数据段生成IP数据报,并将数据报发送给链路层。

2.处理输入的数据报,首先校验数据的合法性,然后进行寻径,假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。

链路层:这是TCP/IP的最低层,负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。

TCP/IP协议的工作流程如下:

1.在源主机上,应用层将一串应用数据流传送给传输层。

2.传输层将应用层的数据流截成分组,并加上TCP报头形成TCP段,送交网络层。

3.在网络层给TCP段加上包括源、目的主机IP地址的IP报头,生成一个IP数据包,并将IP数据包送交链路层。

4.链路层在其MAC帧的数据部分装上IP数据包,再加上源、目的主机的MAC地址和帧头,并根据其目的MAC地址,将MAC帧发往目的主机或IP路由器。

5.在目的主机,链路层将MAC帧的帧头去掉,并将IP数据包送交网络层。

6.网络层检查IP报头,如果报头中校验和与计算结果不一致,则丢弃该IP数据包;若校验和与计算结果一致,则去掉IP报头,将TCP段送交传输层。

7.传输层检查顺序号,判断是否是正确的TCP分组,然后检查TCP报头数据。若正确,则向源主机发确认信息;若不正确或丢包,则向源主机要求重发信息。

8.在目的主机,传输层去掉TCP报头,将排好顺序的分组组成应用数据流送给应用程序。这样目的主机接收到的来自源主机的字节流,就像是直接接收来自源主机的字节流一样。

TCP/IP协议握手过程

几个术语的解释:

SYN:同步标志,表示建立连接

FIN: 连接关闭标志,表示关闭连接

ACK: 应答标志,表示响应

PSH: 表示有 DATA数据传输

RST: 连接重置标志,表示连接重置。

TCP连接包括三个状态:连接创建、数据传送和连接终止。操作系统将TCP连接抽象为套接字的编程接口给程序使用,并且要经历一系列的状态改变。

如下图为三次握手的状态图:

第一次握手:客户端将建立连接标志SYN设置为1,产生一个随机数J,并将该数据报发送给server端,客户端进入SYN_SEND状态,等待服务端的回应。

第二次握手:服务端收到客户端的数据报之后,发现SYN=1,知道客户端在请求建立连接,于是服务端将SYN和ACK都设置为1,并将应答消息ack设置为J+1,然后产生一个随机数seq=k响应给客户端。

第三次握手:客户端收到服务端的消息之后,检查发现SYN和ACK都为1,ack=J+1知道这是server端响应了上个建立连接的请求,于是客户端发送一个ACK=1,ack=K+1的数据报告诉服务端我收到你的响应,服务端检查ack是否为k+1,如果是,那么连接建立成功。

 

 

 

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注