TCP/IP协议介绍

目录

 

一、建立连接

1.三次握手

二、断开连接

2.四次挥手

三、拥塞控制

四、快重传/快恢复/超时重传

1.快重传

2.快速恢复

3.超时重传


一、TCP/IP协议分层

应用层:

向用户提供一组常用的应用程序,比如:电子邮件,文件传输访问,远程登录等。

传输层:

提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发挥确认,并且假如分组丢失,必须重新发送。

网络层:

负责相邻计算机之间的通信,其功能有:

1.处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往新宿机的路径,然后将数据报发往适当的网络接口。

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

3.处理路径,流控,拥塞等问题。

网络接口层:

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

二、IP

IP是无连接的 用于计算机之间的通信。它不会占用两个正在通信的计算机之间的通信线路。这样,IP就降低了对网络线路的需求。

通过IP,消息或者其他数据被分割为小的独立的包,并通过因特网在计算机之间传送。并且IP负责将每个包路由至它的目的地。

三、TCP

TCP用于应用程序之间的通信。当应用程序希望通过TCP与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送给到一个确切的地址。在双方“握手”之后,TCP将在两个应用程序之间建立一个全双工的通信。这个全双工通信将占用两个计算机之间的通信线路,知道它被一方或者双方关闭为止。

1.建立连接

(1)三次握手

标志域:

URG:紧急标志,紧急标志为 1 表明该位有效。

ACK:确认标志,表明确认编号栏有效。

PSH:推标志。该标志置位时,接收端不将该数据进行队列处理,而是尽可能地将数据转由应用处理。

RST:复位标志,哦那个与复位相应的TCP连接

SYN:同步标志,表明同步序列编号栏有效。该标志仅在三次握手建立TCP时有效。

FIN:结束标志。

第一次握手

客户端将标志位SYN置为1,并且产生一个随机值seq=x,并将数据包发送给服务器端,客户端进入SYN_SENT状态,等待服务器确认

第二次握手

当服务端收到数据包时,由标志位SYN=1知道客户端请求建立连接,同时服务器端将SYN置为1,ACK=1,ack=x+1,并产生一个随机值seq=y,将此数据包发送给客户端表示确认连接,此时服务器端处于SYN_RCVD状态

第三次握手

客户端收到确认之后,检查ack是否等于x+1,ACK是否为1,如果正确将ACK置为1,ack=y+1,并将该数据包发送给服务器端,服务器端检查ack是否等于y+1,ACK是否等于1.如果正确则建立成功,客户端和服务器端就进入ESTABLISHED状态,此时客户端与服务器端就可以进行数据传输。

为什么时三次握手?

主要是为了防止已经失效的报文段传到B,从而产生错误。比如:A发送了连接的请求,但是因为报文段丢失未能收到B的回复,从而呢A又重传一遍,后来收到了确认,建立了连接,当数据传输完毕之后就释放了连接。这样来讲A就发送了两次请求连接的报文,第一个丢失,第二个到达了B。

还有另一种情况是第一个报文段因为延误导致A发送了第二次,等B确认连接之后,又收到了A第一次发送的请求连接报文段,这就让B误以为是A再次请求连接,就又进行确认,这样又建立了新的连接,但是A不会向B发送数据,B又在等待A发送来的数据,这样B的很多资源就白白浪费了。

采用三次握手的情况就可以阻止上述情况发生。

2.断开连接

(2)四次挥手

第一次挥手

客户端发送一-个 FIN=1,用来关闭客户端到服务器端的数据传送,客户端进入FIN_ WAIT_ 1状态。
意思是说"我客户端没有数据要发给你了",但是如果你服务器端还有数据没有发送完成,则不必急着关闭连接,可以继续发送数据。

第二次挥手

服务器端收到FIN后,先发送ack=u+1,告诉客户端,你的请求我收到了,但是我还没准备好,请继续你等我的消息。这个时候客户端就进入FIN WAIT_ 2状态,继续等待服务器端的FIN报文。

第三次挥手

当服务器端确定数据已发送完成,则向客户端发送FIN=1报文,告诉客户端,好了,我这边数据发完了,准备好关闭连接了。服务器端进入LAST_ ACK状态。

第四次挥手

客户端收到FIN=1报文后,就知道可以关闭连接了,但是他还是不相信网络,怕服务器端不知道要关闭,所以发送ack=w+1后进入TIME_ WAIT状态,如果Server端没有收到ACK则可以重传。服务器端收到ACK后,就知道可以断开连接了。客户端等待了2MSL后依然没有收到回复,则证明服务器端已正常关闭,那好,我客户端也可以关闭连接了。最终完成了四次握手。

为什么是四次挥手?

因为TCP是双工的,所以断开连接的时候双方需要确认自己发送的消息对方是否已经收到

3.拥塞控制

网络中某一资源的需求超过该资源所能够提供的部分,网络性能会变坏,叫做拥塞。拥塞控制是个全局性的过程

流量控制点对点通信量的控制TCP拥塞控制的4个核心算法:满开始、拥塞避免、快速重传、快速回复

cwnd指拥塞窗口的大小,单次发送数据量的大小

sstresh指慢开始门限的大小(判断网络拥塞出现,就把sstresh大小设置为出现拥塞时的cwnd大小的一半)

传输轮次:从发送数据开始,收到的数据都为ack,为一个轮次

4.快重传/快恢复/超时重传

(1)快重传

快速重传(Fast retransmit)要求接收方在收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方),而不要等到自己发送数据时捎带确认。快重传算法规定,发送方只要一连收到3个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计数器时间到期。

(2)快速恢复

a. 当发送方连续收到三个重复确认,就执行“乘法减小"算法,把慢开始[限ssthresh减半。这是为了预防网络发生拥塞。请注意:接下去不执行慢开始算法。
b.由于发送方现在认为网络很可能没有发生拥塞 ,因此与慢开始不同之处是现在不执行慢开始算法(即拥塞窗口cwnd现在不设置为1) ,而是把cwnd值设置为慢开始i限ssthresh减半后的数值,然后开始执行拥塞避免算法( "加法增大” ),使拥塞窗口缓慢地线性增大。

(3)超时重传

原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值