视觉艺术

计算机网络基础知识——运输层

2020-09-13  本文已影响0人  雁阵惊寒_zhn

OSI的七层协议与TCP/IP的四层协议

OSI的七层协议与TCP/IP的四层协议

IP地址和硬件地址

网络层与运输层

协议端口号(protocol port number)

传输控制协议TCP

特点

  1. 面向连接的运输层协议:先建立连接,用后释放连接
  2. 一条TCP只能连接两个端点:点对点通信
  3. 可靠交付:无差错、不丢失、不重复、按序到达
  4. 全双工通信:通信双方都可以发送和接受数据
  5. 面向字节流:TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流

TCP的连接的端点——套接字(socket)

端口号拼接到IP地址即是套接字。
套接字 socket = (IP地址:端口号)

TCP报文段的首部格式

TCP报文段的首部格式
  1. 首部的前20个字节是固定的,后面4n字节根据需要而增加的选项(n是整数)
  2. 所以,TCP首部的最小长度是20字节

介绍在TCP的握手挥手过程中示例用到的五个字段(注意大小写):

  1. 序号(seq):TCP传送的每一个字节都按顺序编号,序号字段值指的是本报文段所发送的数据的第一个字节的序号
  2. 确认号(ack):期望收到对方下一个报文段的第一个数据字节的序号
  3. 确认ACK(ACKnowledgment):ACK=1时确认字段有效,在建立连接后所有传送的报文段都必须把ACK置1
  4. 同步SYN(SYNchronization):SYN=1表示这是一个连接请求或连接接受报文。SYN=1而ACK=0时,连接请求报文段;SYN=1和ACK=1,连接接受,同意建立连接。
  5. 终止FIN:用来释放一个连接。FIN=1表明已经发送完成,要求释放连接。

TCP连接建立——三次握手

TCP连接建立的三次握手

为什么需要三次握手?
直观上看似乎第三次的握手是不必要,因为两次的握手,一来一往,已经可以建立起连接。那么A为什么还有发送第三次确认呢?主要是防止已经失效的连接请求报文又再次传到B,假如这种情况发生,在没有第三次握手机制下,B会以为A又一次创建连接,而实际上,这次连接请求报文是由于各种原因导致的A没有收到确认信息而再次重发的报文,B创建连接后会一直等待下去。现在有了第三次握手机制,B收到连接请求报文后,发送确认,A不理睬,B不会创建连接了。

TCP建立连接的四次握手(三次握手是重点,这里的四次握手仅仅是一个扩展,了解一下即可)
上面的三次握手中,B发给A的一次握手可以拆分为两次握手,先发送一个确认的报文段ACK=1,ack=x+1,再发送一个同步报文段SYN=1,seq=y。这样就成为了四次握手,效果与三次握手是一样的。

TCP连接释放——四次挥手

TCP连接释放的四次挥手

四次握手后,需要经过时间等待计时器设置的2MSL(MSL是最长报文段寿命,RFC793建议设为2分钟,当然可以根据网络实际情况调整更小的值。),A才进入关闭状态。首先,保证A在最后一次挥手发送的ACK报文段能够到达B,如果丢失可以重发;另外,保证此次连接中所产生所有报文段可以从网络中消失,在新的连接中不会受到旧的报文段,尤其旧的连接请求报文段干扰。

TCP拥塞控制

基于窗口的拥塞控制,发送方维持一个叫做拥塞窗口cwnd(congestion window),拥塞窗口大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。

拥塞窗口的变化:

  1. 慢开始。当主机开始发送数据时,由于并不清楚网络的负荷情况,所以如果立即把大量数据字节注入到网络,那么就有可能引起网络发生拥塞。慢开始是由小到大逐渐增大发送窗口,也就是由小到大逐渐增大拥塞窗口数值。一般拥塞窗口成倍数增大。
  2. 拥塞避免。让拥塞窗口缓慢增大,每次增加1,而不是慢开始的成倍数增大。拥塞避免的“加法增大”,拥塞窗口按线性规律缓慢增长,比慢开始增长要缓慢的多。
  3. 快重传。要让发送方尽早知道发生了个别报文段的丢失。要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认,即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认。另外,快重传规定发送方只要一连收到3个重复确认,就知道是否存在没有收到的报文段,如果存在这样丢失的报文段,应当立即进行重传(即“快重传”)。快重传可以让发送方不会因为网络中个别报文的丢失误认为出现了网络拥塞,减小拥塞窗口。
  4. 快恢复。当网络出现拥塞时,慢开始会将拥塞窗口设置为1后,重新根据网络情况动态增大。快恢复开始时设置一个相对大的拥塞窗口初始值,网络发送方在网络拥塞之后快速恢复。

应用层的域名系统DNS

上一篇 下一篇

猜你喜欢

热点阅读