TCP/IP协议簇及其应用

IP有两个基本功能,寻址和分片。

        源主机可以向已知IP地址的目的主机发送数据包,并借助于网络中的网络设备寻找到达目的主机的路径,最终将数据包发送到目的地,这个过程叫做寻址。

        数据链路层用MTU(最大传输单元,以太网一般为1500字节)来限制所能传输的数据包大小,MTU是指一次传送的数据最大长度,不包括数据链路层数据帧的帧头。当发送的IP数据报的大小超过了MTU时,IP层就需要对数据进行分片,否则数据将无法发送成功。

TTL表示IP数据包的生存时间。数据包在网络传输的过程中,每经过一个路由器的处理,TTL减一,直到为零还没传输到目的地报文就会丢失。


在Windows操作系统中,TTL的默认值为128。


在IP层中,不会管数据是否按照原来顺序被接收,也不管是否丢失,这些操作都是由运输层(TCP和UDP)负责处理的。


在建立TCP连接时需要三次握手:

     客户端发送一个SYN报文段(SYN为1)指明希望连接的服务器端口和初始顺序号(ISN)。

     服务器发回包含服务器的初始顺序号的SYN报文段(SYN为1)作为应答。同时,将确认号设置为客户端的ISN加1以对客户端的SYN报文段进行确认(ACK字段也为1,表示该报文是对SYN=1的应答)。

     客户端必须将确认号设置为服务器的ISN加1以对服务器的SYN报文段进行确认,该报文通知目的主机双方完成连接建立。

     如图所示:

                                                                                   

 

TCP断开连接:

                                                        

   

【注意】中断连接端可以是Client端,也可以是Server端。

假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。TCP连接就这样关闭了!

 

整个过程Client端所经历的状态如下:

                                                                              

 

 

Server端所经历的过程如下:

                       

   

【注意】 在TIME_WAIT状态中,如果TCP client端最后一次发送的ACK丢失了,它将重新发送。TIME_WAIT状态中所需要的时间是依赖于实现方法的。典型的值为30秒、1分钟和2分钟。等待之后连接正式关闭,并且所有的资源(包括端口号)都被释放。

 

【注意】  在TCP断开连接时,多数情况是4次握手来断开连接。

          TCP也可以使用3次握手的方式来断开连接。当主机A发送FIN包后,主机B回复FIN加ACK包,将上面的两个步骤合并为一个步骤,然后主机A再回复ACK包。

          TCP也可以使用两次握手的方式来断开连接。如果两个主机同时发送FIN包,然后又都受到了对应的ACK包,则这种情况可以看作是两次握手。

 

与TCP相比,UDP更适合发送数据量比较少、对响应速度要求比较高的情况(比如Ping检验目标主机是否在线)。


UDP是一种不可靠的协议,在传送数据时,源主机和目的主机之间不建立连接。而TCP为了确保数据传输的准确和安全可靠,集成了各种安全保障功能,这在实际执行过程中会占用大量的系统开销。因此,UDP具有TCP无法比拟的速度优势。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值