做网站改版的,专业微信网站建设公司首选公司哪家好,php怎么连接wordpress,十大营销网站文章目录 1. 传输层相关知识1.1 端口号1.2 端口号范围划分1.3 知名端口号1.4 一些相关命令 2. UDP协议2.1 UDP协议格式2.2 UDP协议的特点2.3 什么是面向数据报2.4 UDP的缓冲区2.5 UDP使用注意事项2.6 基于UDP的应用层协议 1. 传输层相关知识
传输层是计算机网络中的一个重要层… 文章目录 1. 传输层相关知识1.1 端口号1.2 端口号范围划分1.3 知名端口号1.4 一些相关命令 2. UDP协议2.1 UDP协议格式2.2 UDP协议的特点2.3 什么是面向数据报2.4 UDP的缓冲区2.5 UDP使用注意事项2.6 基于UDP的应用层协议 1. 传输层相关知识
传输层是计算机网络中的一个重要层次位于网络层和应用层之间它的主要功能是为应用层提供端到端的数据传输服务负责确保数据可靠传输、流浪控制和拥塞控制等。
传输层的两个主要协议是传输控制协议TCP和用户数据报协议UDP。它们各自有不同的特点和用途本文章主要大概介绍了传输层相关知识以及UDP协议。
1.1 端口号 端口号的作用 端口号port标识一个主机上进行网络通信的不同程序。当主机从网络中获取到数据之后需要自底向上进行数据的交付而这个数据最终应该交付给上层的哪个进程就是由端口号来决定的。
所以端口号就是计算机网络中用于标识应用程序或服务的数字标识符它是在传输层使用的以便将数据正确地交给对应的应用程序。
当网络中的数据在向上交付时在传输层系统会提取出数据对应的端口号进而确定该数据应该交付给哪一个进程。 五元组标识通信 在TCP/IP协议中用源IP源端口号目的IP目的端口号协议号这样一个五元组来标识一个通信可以通过netstat命令查看。 其中Local Address表示的就是源IP地址和源端口号Foreign Address表示的就是目的IP地址和端口号而Proto表示的就是协议类型。 协议号与端口号 协议号是存在于IP报头当中的其长度为8位。协议号指明了数据报所携带的数据是使用的何种协议以便让目的主机的IP层知道应该将数据交付给传输层的哪个协议进行处理。端口号是存在于UDP和TCP报头当中得到其长度为16位。端口号的作用是标识一台主机上的某个进程。协议号是作用与传输层和网络层之间的而端口号是作用于应用层和传输层之间的。
1.2 端口号范围划分
0 ~ 1023知名端口号HTTP、FTP、SSH等这些广为使用的应用层协议它们的端口号都是固定的。1024 ~ 65535操作系统动态分配的端口号客户端程序的端口号就是由操作系统从这个范围分配的。
1.3 知名端口号 有些服务器是非常常用的为了使用方便人们约定一个常用的服务器都是用以下这些固定的端口号。 ssh服务器使用22号端口ftp服务器使用21号端口telnet服务器使用23号端口http服务器使用80号端口https服务器使用443号端口 查看知名端口号 我们可以看到知名的端口号在我们自己写一个程序使用端口号时要避开这些知名端口号。
我们可以查看 /etc/services 文件该文件是记录网络服务器名和它们对应使用的端口号和协议。 文件中的每一行对应一张服务它由四个字段组成每个字段之间用TAB或者空格分开分别表示“服务名称”、“使用端口”、“协议名称”、“别名”。
1.4 一些相关命令 netstat命令是一个用来查看网络状态的工具。 其常见的选项如下
n不显示别名能显示数字的全部转换为数字l仅显示出处于LISTEN状态的服务器p显示建议相关链接的程序名t仅显示TCP相关选项u仅显示UDP相关选项a显示所有选项
查看UDP相关网络信息一般使用nlup选项 查看TCP相关网络信息一般使用nltp选项 iostat命令 iostat命令主要用于输出磁盘IO和CPU的统计信息。
其常见的选项如下
c显示CPU的使用情况d显示磁盘的使用情况N显示磁盘列阵信息n显示NFS使用情况k以KB为单位显示m以M为单位显示t报告每秒向终端读取和写入的字符数和CPU的信息V显示版本信息x显示详细信息p显示磁盘分区情况 CPU属性值说明
%userCPU处在用户模式下的时间百分比%niceCPU处在带NICE值的用户模式下的时间百分比%systemCPU处在系统模式下的时间百分比%iowaitCPU等待输入输出时间的百分比%steal管理程序维护另一个虚拟处理器时虚拟CPU的无意识等待时间百分比%idleCPU空闲时间百分比 pidof命令 pidof命令可以通过进程名查看进程id。
2. UDP协议
2.1 UDP协议格式 UDP的位置 网络套接字编程时用到的各种接口是位于应用层和传输层直接的一层系统调用接口这些接口是系统提供的我们可以通过这些接口搭建上层应用比如HTTP。我们经常说HTTP是基于TCP的实际就是因为HTTP在TCP套接字编程上搭建的。
而socker接口往下的传输层实际就是由操作系统管理的因此UDP是属于内核当中的是操作系统本身协议栈自带的其代码不是由上层用户编写的UDP的所有功能都是由操作系统完成因此网络也是操作系统的一部分。
UDP协议格式 16位源端口号表示数据从哪里来16位目的端口号表示数据要到哪里去16位UDP长度表示整个数据报UDP首部UDP数据的长度16位UDP检验和如果UDP报文的检验和出错就会直接将报文丢弃
我们在应用层看到的端口号大部分都是16位的其根本原因就是因为传输层协议当中的端口号就是16位的。 UDP如何将报头与有效载荷分离 UDP的报头当中只包含四个字段每个字段的长度都是16位总共8字节。因此UDP采用的实际上是一种定长报头UDP在读取报文时读取完前8个字节后剩下的就都是有效载荷了。 UDP如何决定将有效载荷交付给上层的哪一个协议 UDP的报头当中包含了目的端口号通过目的端口号去找到对应的进程。
内核中用哈希的方式维护了端口号与进程ID之间的映射关系因此传输层可以通过端口号得到对应的进程ID进而找到对的进程。 如何理解报头 操作系统是用C语言写的而UDP协议又是属于内核协议栈的因此UDP协议也一定是用C语言写的UDP报头实际就是一个位段结构。 UDP数据封装 当应用层将数据交给传输层之后在传输层就会创建一个UDP报头类型的变量然后填充报头当中的各个字段此时就得到了一个UDP报头。此时操作系统再在内核当中开辟一块空间将UDP报头和有效载荷拷贝在一起此时就形成了UDP报文。 UDP数据分用 当传输层从下层获取到一个报文之后就会读取报文的前八个字节提取出对应的目的端口号。通过目的端口号找到对应的上层应用层进程然后将剩下的有效载荷向上交付给该应用层进程。
2.2 UDP协议的特点
UDP传输的过程就类似于寄信其特点如下
无连接知道对端的IP和端口号就直接进行数据传输不需要建立连接不可靠没有确认机制没有重传机制。如果因为因为网络故障该段无法发送给对方UDP协议层也不会给应用层返回任何错误信息。面向数据报不能够灵活地控制读写数据的次数和数量
2.3 什么是面向数据报
应用层交给UDP多长的报文UDP就按原样发送既不会拆分也不会合并这就叫做面向数据报。
比如用UDP传输100个字节的数据 如果发送端调用一次sendto发送100字节数据那么接收端也必须调用一次recvfrom接收100个字节数据。而不能循环调用10次recvfrom每次接收10个字节数据。
2.4 UDP的缓冲区
UDP没有真正意义上的发送缓冲区。调用sendto会直接交给内核由内核将数据传给网络层协议后进行后续的动作。UDP具有接收缓冲区当这个接收缓冲区并不能保证收到的UDP报的顺序和发送UDP报的顺序一致。如果缓冲区满了再到达的UDP数据就会被丢弃。UDP的socket既能读也能写因此UDP是全双工的。 为什么UDP要有接收缓冲区 如果UDP没有接收缓冲区那么就要求上层及时将UDP获取到的报文读取上去如果一个报文在UDP没有被读取那么此时UDP从底层读取上来的报文数据就会被迫丢弃。
一个报文从一台主机传输到另一台主机在传输过程中会消耗主机资源和网络资源。如果UDP收到一个报文后仅仅因为上次收到的报文没有被上层读取而被迫丢弃一个可能并没有错误的报文这就是在浪费主机资源和网络资源。
因此UDP本身是会维护一个接收缓冲区的当有新的UDP报文到来时就会把这个报文放到接收缓冲区当中此时上层在读数据时就直接从这个接收缓冲区当中进行读取就行了而如果UDP接收缓冲区当中没有数据那上层在读取时就会被阻塞。
因此UDP接收缓冲区的作用就是将收到的报文暂时保存起来供上层读取。
2.5 UDP使用注意事项
需要注意的是UDP协议报头当中的UDP最大长度是16位的因此一个UDP报文的最大长度是64K包含UDP的大小。
然而64K在当今的互联网环境下是一个非常小的数字。如果需要传输的数据超过64K就需要在应用层进行手动分包多次发送并在接收端进行手动拼装。
2.6 基于UDP的应用层协议
NFS网络文件系统TFTP简单文件传输协议DHCP动态主机配置协议BOOTP启动协议用于无盘设备启动DNS域名解析协议