网络基础———传输层中的TCP,UDP和Wireshark抓包过程

传输层

  • 传输层 向上面的应用层提供服务,属于面向通信部分的最高层,也是用户功能中的最底层。传输层为相互通信的应用进程提供了逻辑通信。主要协议包括:TCP协议和UDP协议。
  • 传输层的主要作用:分段及封装应用层送来的数据;提供端到端的传输服务;在发送主机与接受主机间构建逻辑通信。
    1.传输层中的端口号:
  • TCP/IP协议中的端口号就是逻辑端口,通过不同的逻辑端口可以来区分不同的服务。一个IP地址的端口通过16bit进行编号,最多可以有65536个端口。端口是通过端口号来区分,端口号只有整数,范围是从0-65535.
  • 端口的作用:一台拥有IP地址的主机可以提供许多服务,比如Web服务,FTP服务,SMTP服务等。这些服务完全是通过一个IP地址实现的。那么在主机内部,主机是如何区分这些服务的?实际上主机内部通过:IP地址+端口号(也交叫插口或套接字)来区分不通的服务的。
    1.1 通过端口号来识别应用进程:
    一台计算机上同时可以运行多个应用进程。传输层协议正式利用这些端口识别本机中正在进行通信的应用进程,并准确地将数据传输
    1.2 通过IP地址,端口号,协议号进行通信识别:
    仅凭目标端口号识别某一个通信是远远不够的。需要通过源IP地址,目的IP地址,协议号,源端口号和目的端口号这五个元素来识别一次通信。
    传输层的分用与复用:
    一般来说,应用层会有多个进程同时进行,同时与外部进行数据交换,我们将其称为并行,可是在底层数据传输是串行的。所以这理需要进行并串的转换,我们将并串的转换称为复用,反之,串并的转换称为分用。
    1.3 端口的范围:
    固定端口:0-1023,这些端口固定分配给一些服务。比如 21端口分配给FTP服务(文件传输协议),25端口分给SMTP服务(简单邮件传输协议),80端口分配给HTTP(超文本传输协议)服务,135端口给RPC服务(远程过调用)等。

2. TCP协议:

  • TCP是一种面向连接的(通讯双方交换数据之前必须建立连接),可靠的(多种可靠性的机制),基于字节流(8bit (1Byte))为最小单位构成的字节流)的传输层通信协议。
  • TCP作为一种面向的连接的协议,只有确认通信的另一端存在时,才会进行数据的传输,TCP在传输过程中为了保证不发生丢包,就给每个包一个序号,同时序号也保证接受方可以按序接收,如果发送端在允许的时间延时内没有收到往返的确认,就认为数据包在传输时丢失,就会重新发送数据。TCP用一个检验和函数来检验数据是否有误,在发送与接收时都要进行检验,确保数据的可靠传输。
    2.1 TCP报文段头部信息分析:
    用Wireshark抓取的头部信息:

在这里插入图片描述

  • 源端口与目的端口:各占两个字节,端口是传输层与应用层的服务接口,传输层的复用和分用功能都要通过端口才能实现,也表示数据从哪个进程来,到哪个进程去
  • 序号字段:占四个字节。TCP连接中传输的数据流中的每一个字节都编上一个序号,序号字段的值则指本报文段所发送的数据的第一个字节的序号。
  • 确认号字段:站4个字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
  • 首部长度:占4bit,可表示的最大十进制数值15(一个单位为4为个字节),因此,TCP的首部长度的最大值是60字节。他指出TCP首部共有多少个4字节,首部长度可以在20-60字节之间。
  • 保留字段:占6bit,保留为今后使用,目前置为0。
  • 紧急比特:当置为1时,表明紧急指针字段有效,当前数据应该优先发送
  • 确认比特:ACK=1时确认号字段才有效,ACK=0,确认号无效。
  • 推送字段PSH:接受TCP收到推送比特置1的报文段,就尽快地交付给接受应用进程,而不再等到整个缓存都填满了之后在向上交付。
  • 同步比特SYN:同步比特置为1,就表示这是一个连接请求或者连接接收报文
  • 终止比特:用来是释放一个连接 当FIN=1时,就表明报文段的发送端的数据已经发送完毕,并要求释放连接。
  • 窗口字段:占2字节,用来控制对方发送的数据量,单位为字节。TCP连接的一端根据设置的缓存空间大小确认自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。
  • 检验和:占2字节。字段检验的范围包括首部和数据者两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。
  • 紧急指针:占2字节。指出在本报文段的紧急数据的最后一个字节的序号。
    2.2 TCP三次握手:
    TCP建立连接的过程称为三次握手,

通过Wireshark抓包来分析三次握手的过程:
在这里插入图片描述
图中是IP为192.168.0.101与IP为14.215.177.39建立连接的过程
第一次握手:客户端向服务器发送连接请求包,标志位SYN(同步序号)置为1,确认序号Seq=0
在这里插入图片述
第二次握手:服务器收到客户端发过来的报文,由SYN=1知道客户端要求建立连接。向客户端发送一个SYN和ACK都置为1的TCP报文,设置初始确认序号Seq=0,将确认序号(Acknowledgement Number)设置为客户的序列号加1,即Ack=0+1=1。
在这里插入图片描述
第三次握手:客户端收到服务器发来的包后检查确认序号是否正确,即第一次发送的序号加1。以及标志位ACK是否为1。若正确,服务器再次发送确认包,ACK标志位为1,确认序号=1,发送序号为1。客户端收到后确认序号值与ACK=1则建立成功,可以传送数据了。

图中是IP为192.168.0.101与IP为14.215.177.39断开连接的过程
在这里插入图片描述
第一次挥手:客户端给服务器发送TCP包,用来关闭客户端到服务器的数据传送。将标志位FIN和ACK置为1,如图,序号Seq=62,确认号=1
在这里插入图片描述
第二次挥手:服务器收到FIN后,发回一个ACK(标志位ACK=1)确认号为收到的序号加1,即ACK=62+1=63,,序号变为确认号即Seq=1
在这里插入图片描述
第三次挥手:服务器关闭与客户端的连接,发送一个FIN和ACK。标志位FIN和ACK置为1.第三次挥手的序号与确认号和第二次的相同。
在这里插入图片描述
第四挥手:客户端收到服务器发送的FIN之后,发回ACK确认标志(ACK=1),确认序号为收到的序号加1,即1+1=2,序号为确认号63
在这里插入图片描述
UDP协议:

  • UDP是一种无连接,不可靠协议。
  • 并且,他是将应用程序发送来的数据在收到那一刻,立刻按照原样发送到网络上的一种机制。即使网络拥堵的情况,UDP也无法进行流量控制等避免网络拥塞的行为。
  • 此外,传输途中出现丢包,UDP也不负责重发。甚至当包的到达顺序出现乱序时也没有纠正功能。
  • UDP常用于以下几个方面:包总量极少的通信(DNS,SNMP);视屏音频的多媒体通信(即时通信);限定于LAN等特定网络中的应用通信;广播通信。
    在这里插入图片描述
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值