服务器中传输的数据包如何表示
⑴ 关于网络传输过程的数据封装
数据封装(Data Encapsulation)是指将协议数据单元(PDU)封装在一组协议头和尾中的过程。在OSI七层参考模型中,每层主要负责与其它机器上的对等层进行通信。该过程是在协议数据单元(PDU)中实现的,其中每层的PDU一般由本层的协议头、协议尾和数据封装构成本文选自WireShark数据包分析实战详解清华大学出版社。
为了帮助用户更清楚的理解数据封装过程,下面通过一个实例来说明这个过程。假设某个公司局域网使用以太网,当员工从局域网的FTP服务器下载一个文件时,该文件从FTP服务器到员工主机的传输过程如图1.17所示本文选自WireShark数据包分析实战详解清华大学出版社。
在图1.17中,FTP服务器作为数据的发送端,员工主机作为数据的接收端。下面分别介绍数据发送和接收处理过程。
1.数据发送处理过程数据封装协议数据单元封装WireShark数据包分析
(1)应用层将数据交给传输层,传输层添加上TCP的控制信息(称为TCP头部),这个数据单元称为段(Segment),加入控制信息的过程称为封装。然后,将段交给网络层。
(2)网络层接收到段,再添加上IP头部,这个数据单元称为包(Packet)。然后,将包交给数据链路层。
(3)数据链路层接收到包,再添加上MAC头部和尾部,这个数据单元称为帧(Frame)。然后,将帧交给物理层。
(4)物理层将接收到的数据转化为比特流,然后在网线中传送。
2.数据接收处理过程数据封装协议数据单元封装WireShark数据包分析
(1)物理层接收到比特流,经过处理后将数据交给数据链路层。
(2)数据链路层将接收到的数据转化为数据帧,再除去MAC头部和尾部,这个除去控制信息的过程称为解封装,然后将包交给网络层。
(3)网络层接收到包,再除去IP头部,然后将段交给传输层。
(4)传输层接收到段,再除去TCP头部,然后将数据交给应用层。
从以上传输过程中,可以总结出以下几点。如下所示:
(1)发送方数据处理的方式是从高层到底层,逐层进行数据封装。
(2)接收方数据处理的方式是从底层到高层,逐层进行数据解封装。
(3)接收方的每一层只把对该层有意义的数据拿走,或者说每一层只能处理发送方同等层的数据,然后把其余的部分传递给上一层,这就是对等层通信的概念本文选自WireShark数据包分析实战详解清华大学出版社数据封装协议数据单元封装WireShark数据包分析。
⑵ 电脑宽带里的数据包中已发送和已接受底下的数字是什么意思,以什么为单位
以字节为单位.
已发送:从您的电脑发送至远程服务器的数据量.
已接受:从远程服务器至您的电脑的传输量.
单位:
1024字节=1B
1024B=1KB
1024KB=1M
1024M=1G
⑶ 数据包在传输过程中是什么形式
“包”(Packet)是TCP/IP协议通信传输中的数据单位,一般也称“数据包”。有人说,局域网中传输的不是“帧”(Frame)吗?没错,但是TCP/IP协议是工作在OSI模型第三层(网络层)、第四层(传输层)上的,而帧是工作在第二层(数据链路层)。上一层的内容由下一层的内容来传输,所以在局域网中,“包”是包含在“帧”里的。 名词解释:OSI(Open System Interconnection,开放系统互联)模型是由国际标准化组织(ISO)定义的标准,它定义了一种分层体系结构,在其中的每一层定义了针对不同通信级别的协议。OSI模型有7层,1 7层分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。OSI模型在逻辑上可分为两个部分:低层的1 4层关注的是原始数据的传输;高层的5 7层关注的是网络下的应用程序。 我们可以用一个形象一些的例子对数据包的概念加以说明:我们在邮局邮寄产品时,虽然产品本身带有自己的包装盒,但是在邮寄的时候只用产品原包装盒来包装显然是不行的。必须把内装产品的包装盒放到一个邮局指定的专用纸箱里,这样才能够邮寄。这里,产品包装盒相当于数据包,里面放着的产品相当于可用的数据,而专用纸箱就相当于帧,且一个帧中只有一个数据包。 “包”听起来非常抽象,那么是不是不可见的呢?通过一定技术手段,是可以感知到数据包的存在的。比如在Windows 2000 Server中,把鼠标移动到任务栏右下角的网卡图标上(网卡需要接好双绞线、连入网络),就可以看到“发送:××包,收到:××包”的提示。通过数据包捕获软件,也可以将数据包捕获并加以分析。 就是用数据包捕获软件Iris捕获到的数据包的界面图,在此,大家可以很清楚地看到捕获到的数据包的MAC地址、IP地址、协议类型端口号等细节。通过分析这些数据,网管员就可以知道网络中到底有什么样的数据包在活动了。 附: 数据包的结构 数据包的结构非常复杂,不是三言两语能够说清的,在这里主要了解一下它的关键构成就可以了,这对于理解TCP/IP协议的通信原理是非常重要的。数据包主要由“目的IP地址”、“源IP地址”、“净载数据”等部分构成。 数据包的结构与我们平常写信非常类似,目的IP地址是说明这个数据包是要发给谁的,相当于收信人地址;源IP地址是说明这个数据包是发自哪里的,相当于发信人地址;而净载数据相当于信件的内容。 正是因为数据包具有这样的结构,安装了TCP/IP协议的计算机之间才能相互通信。我们在使用基于TCP/IP协议的网络时,网络中其实传递的就是数据包。理解数据包,对于网络管理的网络安全具有至关重要的意义 这部分简要介绍一下TCP/IP的内部结构,为讨论与互联网有关的安全问题打下基础。TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如T1和X.25、以太网以及RS-232串行接口)之上。确切地说,TCP/IP协议是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。 TCP/IP整体构架概述 TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为: 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。 互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。 网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。 TCP/IP中的协议 以下简单介绍TCP/IP中的协议都具备什么样的功能,都是如何工作的: 1. IP 网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。 IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。 高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好象是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。 2. TCP 如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。 TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。 面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。 3.UDP UDP与TCP位于同一层,但对于数据包的顺序错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网落时间协议)和DNS(DNS也使用TCP)。 欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。 4.ICMP ICMP与IP位于同一层,它被用来传送IP的的控制信息。它主要是用来提供有关通向目的地址的路径信息。ICMP的‘Redirect’信息通知主机通向其他系统的更准确的路径,而‘Unreachable’信息则指出路径有问题。另外,如果路径不可用了,ICMP可以使TCP连接‘体面地’终止。PING是最常用的基于ICMP的服务。 5. TCP和UDP的端口结构 TCP和UDP服务通常有一个客户/服务器的关系,例如,一个Telnet服务进程开始在系统上处于空闲状态,等待着连接。用户使用Telnet客户程序与服务进程建立一个连接。客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。因而,这个连接是双工的,可以用来进行读写。 两个系统间的多重Telnet连接是如何相互确认并协调一致呢?TCP或UDP连接唯一地使用每个信息中的如下四项进行确认: 源IP地址 发送包的IP地址。 目的IP地址 接收包的IP地址。 源端口 源系统上的连接的端口。 目的端口 目的系统上的连接的端口。 端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。一个端口对应一个16比特的数。服务进程通常使用一个固定的端口,例如,SMTP使用25、Xwindows使用6000。这些端口号是‘广为人知’的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯
⑷ 三.传输层
传输层的 核心任务 : 应用进程 之间提供 端到端 的 逻辑通信 服务
回顾:只有 主机 才有传输层,网络核心中的路由器、交换机、集线器等只用到 下三层 的功能
记:分复流拥寻差错-可靠
一台计算机中,不同应用进程用 进程标识符(进程ID) 来区分
网络环境下:
TCP/IP 体系结构网络的解决方法:
在传输层使用协议端口号,通常简称为端口(port), 在全网范围内利用 IP地址+端口号 唯一标识一个通信端点
传输层端口号为16位整数,可以编号65536个(2的16次方)
常用端口: 端口号小于256的端口
传输层端口号:
1、服务器端使用的端口号:熟知端口号和登记端口号
2、客户端使用的端口号临时性,在客户进程运行时由操作系统随机选取唯一的未被使用的端口号:
多路复用 :在源主机,传输层协议从不同的套接字收集应用进程发送的数据块,并为每个数据块封装上首部信息(包括用于分解的信息)构成报文段,然后将报文段传递给网络层
多路分解 : 在目的主机,传输层协议读取报文段中的字段,标识出接收套接字,进而通过该套接字,将传输层报文段中的数据交付给正确的套接字
多路复用与多路分解(复用与分解/复用与分用): 支持众多 应用进程共用 同一个传输层协议,并能够将接收到的数据准确交付给 不同的应用进程
用户数据报协议(User Datagram Protocol, UDP):Internet提供无连接服务的传输层协议
UDP套接字二元组:<目的IP地址,目的端口号>
传输控制协议(Transmission Control Protocol, TCP): Internet提供面向连接服务的传输层协议
TCP套接字四元组: <源IP地址,源端口号,目的IP地址,目的端口号>
基于不可靠信道实现可靠数据传输采取的措施
差错检测:利用编码实现数据报传输过程中的比特差错检测
确认: 接收方向发送方反馈接收状态。 ACK(肯定确认) ;NAK(否定确认)
重传:发送发 重新 发送接收方没有正确接收的数据
序号:确保数据按序提交(对数据进行编号,即便不按序到达,可以按序提交)
计时器: 解决 数据丢失问题
TCP提供可靠数据传输服务
UDP不提供可靠数据传输服务
最简单的自动重传请求协议是停等协议
流水线协议:管道协议,允许发送方在没有收到确认前连续发送 多个 分组
最典型的流水线协议: 滑动窗口协议
1、 增加分组序号
2、发送方和接收方可以缓存多个分组
发送方的发送窗口:发送方可以发送未被确认分组的最大数量
接收方的接收窗口: 接收方可以缓存到正确到达的分组的最大数量
发送:
接收:
滑动窗口协议:根据窗口的大小,可以具体分为:
回退N步协议:GBN协议(Go-Back-N)
选择重传协议:SR协议(Selective Repeat)
GBN协议: 发送窗口>=1; 接收窗口=1 ;
发送端 缓存能力高,可以在没有得到确认前发送多个分组
接收端 缓存能力很低,只能接收一个按序到达的分组,不能缓存未按序到达的分组
GBN发送方响应的3类事件:
SR协议: 发送窗口>1 接收窗口>1
发送端缓存能力高
接收端缓存能力高
SR发送方响应事件:
用户数据协议(User Datagram Protocal, UDP): Internet 传输层 协议,提供 无连接 、不可靠、数据报尽力传输服务
0-15-31: 32位二进制
UDP首部四个字段: 每个字段长度都是2字节,共8个字节
源端口号和目的端口号:UDP实现复用和分解
长度:指示UDP报文段中的字节数(首部和数据的总和)
校验和:接收方使用检测数据报是否出现差错
应用数据字段:应用层数据占用
UDP校验和:提供差错检测功能
UDP的校验和用于检测UDP报文段从源到目的地传送过程中,其中的数据是否发生了改变
UDP校验和计算规则
1、所有参与运算的内容按16位对齐求和
UDP校验和计算的内容包括3部分:UDP伪首部、应用数据
传输控制协议(Transmission Control Protocol ,TCP): Internet 传输层协议
提供面向连接、可靠、有序、字节流传输服务
第一:应用进程 先建立连接
第二:每一条TCP连接只有 两个 端点
第三: 可靠交付 :无差错、不丢失、不重复、按序到达
第四: 全双工 通信
第五:面向 字节流
流:字节序列,应用程序和TCP的交互是一个个数据块,TCP把他们看做是无结构字节流
1、源端口号字段、目的端口号字段:占16位、复用和分解上层应用的数据
2、序号字段、确认序号字段:占32位
序号字段:TCP序号是对每个应用层数据的每个字节进行编号
确认序号字段:期望从对方接受数据的字节序号,即该序号对应的字节尚未收到
9.选项字段长度可变,最短为0字节,最长为40字节
TCP连接管理:连接建立与连接拆除
以客户端上的一个应用进程与服务器上的一个应用进程建立一条TCP连接为例
一、建立连接
第一次握手:
客户向服务器发送连接请求段:(SYN=1, seq=x)
SYN = 1; 建立连接请求控制段
seq=x; 表示传输的报文段第1个数据字节的序列号是x,此序列号代表整个报文段的序号
客户端进入SYN_SEND (同步发送)
第二次握手:
服务端发回确认报文段:(SYN=1, ACK=1,seq=y,ack_seq=x+1)
SYN=1 同意建立新连接的确认段
ack_seq = x + 1; 表示已经收到序列号为x的报文段,准备接受序列号为x+1的报文段
seq=y : 服务器告诉客户确认报文段的序列号是y
服务器由LISTEN进入SYN_RCVD(同步收到)
第三次握手
客户端对服务器的同意连接报文段进行确认:(ACK=1,seq=x+1, ack_seq=y+1)
seq=x+1 : 客户端此次的报文段的序列号是x+1;
ack_seq = y+1 : 客户端期望接收服务器序列号y+1的报文段
当客户端发送ACK时,客户端进入ESTABLISHED状态
当服务端收到ACK后,也进入ESTABLISHED状态
第三次 握手可携带数据
二、连接拆除:四次挥手
第一次挥手
客户端向服务器发送释放连接报文段:(FIN=1, seq=u)
FIN=1.发送端数据发送完毕,请求释放连接
seq=u 传输的第一个数据字节的序号是u
客户端状态由ESTABLISHED进入FIN_WAIT_1(终止等待1状态)
第二次挥手
服务器向客户发送确认段:(ACK=1, seq=v, ack_seq=u+1)
ACK=1; 确认字号段有效
ack_seq=u+1 : 服务器期望接受客户数据序号为u+1
seq=v: 服务器传输的数据序号是v
服务器状态由ESTABLISHED进入CLOSE_WAIT(关闭等待)
客户端收到ACK段后,由FIN_WAIT_!进入FIN_WAIT_2
第三次挥手
服务器向客户发送释放连接报文段:(FIN=1, ACK=1, seq=v+1, ack_seq=u+1)
FIN =1: 请求释放连接
ACK = 1:确认字号段有效
ack_seq=u+1: 表示服务器期望接受客户数据序列号为1
seq=v+1 表示自己传输的第一个数据字节的序号是v+1
服务器状态由CLOSE_WAIT进入LAST_ACK(最后确认状态)
第四次挥手:
客户向服务器发送确认段:(ACK=1,seq=u+1,ack_seq=w+1)
ACK=1: 确认字号段有效
ack_seq=v+1+1 : 表示客户期望接受服务器数据序号为v+1+1
seq=u+1 表示客户传输的数据的序号是u+1
客户端状态由FIN_WAIT_2进入TIME_WAIT 等待2MSL时间,进入CLOSED状态
服务器再收到最后一次ACK后,由LAST_ACK进入CLOSED
一、可靠:保证接收方应用进程从缓冲区读出的字节流与发送发发出的字节流是完全一样的
二、TCP实现可靠数据传输服务的工作机制
1、应用层数据被 分割 成TCP认为最适合发送的数据块
2、序号,发送方对发送的数据包进行编号,确保数据按序提交给接收方 采用累积确认
3、确认,接收方向发送方反馈接收状态,确认是否正确接收数据
4、差错检测,利用差错编码实现数据包传输过程中的比特差错检测(甚至纠正)
5、重传,发送方重新发送接收方没有正确接收的数据
6、计时器,在发送方引入计时器,解决数据丢失问题
最大报文段长度:1500字节
报文段中封装的应用层数据的最大长度:1480字节 = 1500 - 最短的首部长度
TCP生成ACK的策略
流量控制:协调发送方与接收方的数据发送与接收 速度
在通信过程中,接收方设置报文段的 接收窗口字段 来将窗口大小通知给发送方
一、网络拥塞: 太多的主机``以太快的速度 向网络中发送 太多的数据 ,超出了网络处理能力,导致大量数据分组拥挤在中间设备队列中等待转发, 网络性能 显着下降的现象
二、拥塞控制:通过合理调度、规范、调整向网络中发送数据的主机数量、发送速率、数据量、以 避免 拥塞或 消除 已发生的拥塞
三、概念补充介绍
四、TCP拥塞控制算法
阈值之前:慢启动阶段
阈值之后:拥塞避免阶段
l例如: 发生计时器超时,当前拥塞窗口24MSS,当前阈值为16MSS
新的阈值:为当前拥塞窗口的一半,新的阈值=24/2=12MSS
新的拥塞窗口:直接调整为1MSS 新的拥塞窗口=1MSS
调整好新的阈值和新的拥塞窗口之后,使用 慢启动。拥塞避免 算法增加拥塞窗口大小
例如:发送3次重复确认时,当前拥塞窗口为24MSS,当前阈值为16MSS
新的阈值:为当前拥塞窗口的一半
新的拥塞窗口:调整为新的阈值
调整好新的阈值和新的拥塞窗口后,使用 拥塞避免 算法增加拥塞窗口大小
五、窗口调整的基本策略(Additive Increase,Multiplicative Decrease, AIMD):
网络未发生拥塞时:逐渐"加性"增大窗口
网络拥塞时“乘性”减小窗口
六、拥塞预防策略:流量整型技术:规范主机向网络发送数据的流量
⑸ 什么是服务器发包
服务器发包是指在网络通信中,服务器向客户端发送数据包的过程。这一过程通常发生在客户端向服务器发送请求后,服务器根据请求内容处理数据,并将结果以数据包的形式发送回客户端。
在网络通信中,数据包是信息传输的基本单位。当客户端向服务器发送请求时,客户端会构建一个请求数据包,并将其发送到服务器。服务器接收到请求数据包后,会对其进行解析,并执行相应的操作,如查询数据库、处理数据等。完成处理后,服务器会将结果数据封装成一个或多个响应数据包,并通过网络发送回客户端。
服务器发包的过程涉及多个关键步骤。首先,服务器需要构建响应数据包。这包括确定要发送的数据内容、设置数据包头信息(如源IP地址、目标IP地址、协议类型等)、选择适当的传输层协议(如TCP或UDP)等。接下来,服务器会将构建好的数据包发送到网络层,由网络层负责将数据包传输到目标客户端。
以Web服务器为例,当用户在浏览器中输入网址并按下回车键时,浏览器会向Web服务器发送一个HTTP请求数据包。Web服务器接收到请求后,会处理请求并生成一个HTML页面作为响应。然后,Web服务器会将这个HTML页面封装成一个或多个HTTP响应数据包,并通过网络发送回浏览器。浏览器接收到响应数据包后,会对其进行解析并展示给用户。
总之,服务器发包是网络通信中的重要环节,它实现了服务器与客户端之间的数据交互。通过构建和发送响应数据包,服务器能够向客户端提供所需的数据和服务。