目录
一,传输层协议
之前我们学到的协议比如:HTTP ,HTTPS协议都是应用层的协议,应用层的协议能够保证数据能够以一定的格式安全的发送。传输层的协议则是为了保证数据的有效传输而设定的。
二,基础知识
1,端口号
在网络通信的过程中,ip能够标识唯一的一台主机而端口号则能够标识这台主机上唯一的一个进程。
2,端口号分类
端口号,被分为有名端口号和其它端口号。一般而言,端口号的表示范围是0~65535(uint6)。有名端口号一般在0~1023这个范围内定义,比如:
ssh服务器——22端口。
ftp服务器——21端口。
telnet服务器——23端口。
http服务器——80端口。
https服务器——443端口
也有例外,比如mysql的端口号便是3306,不在0~1024的范围内。
再Linux上,查看端口号的命令是:
vim /etc/services
3,一些命令
1,netstat命令
netstat命令能够查看我当前主机上的网络套接字进程:
当你什么选项都不加的话就会将所有的进程显示出来。
netstat命令的选项如下:
-n:当这个网络套接字进程能够用数字表示时绝对不使用别名。
-l:将监听状态下的进程显示出来。
-u:显示udp服务的进程。
-t:显示tcp服务的进程。
-a:显示所有的进程,但是默认不包含监听状态。
2,pidof命令
pidof命令能够显示一个进程的id,并且屏蔽掉其它的消息。
使用:
pidof 程序名
如:
3,-xargs
-xargs选项能够将管道左边的参数变成命令行参数的方式传给一个命令。使用如下:
command | xargs [options] [command]
当要使用kill命令来kill掉一个进程时,便可以将pidof和-xargs命令还有管道命令联合起来用,比如我要kill掉一个程序名为Server的程序便可以写成如下形式
pidof Server | xargs kill -9
这样便能将一个名叫Server的进程杀掉了。这里的xargs便能够将pidof Server的id号转化成命令行参数的形式给kill命令传输过去,进而杀掉一个特定的进程。
4,五元组
在网络通信当中,一个五元组便能表示一个唯一的信道。五元组的有以下五个元素组成:
1,源ip 2,目的ip 3,源端口号 4,目的端口号 5,协议
三,UDP协议
1,UDP协议的报头
UDP报头的组成如上图,UDP报文的组成分为两大部分,分别是报头和有效载荷。
所以,当我们在解开消息时我们需要将报头和有效载荷分开。
1,UDP报文如何分为报头和有效载荷两部分?
UDP报文当中,UDP的报头是定长报头。长度为八个字节,当我们要将报头和有效载荷分开时便可以让UDP报文将前八个字节的内容和其它内容分开。
2,UDP报文如何得知自己的全部内容的长度?
在UDP报文的报头当中,有一项内容叫做UDP长度。这项数据便代表着整个报文的长度,这个长度减去八个字节的长度大小便是有效载荷的长度。经过计算也可以知道,UDP的有效载荷能够容纳的大小最多就是64kb。
3,如何区分发送时要使用那个协议?
特定的端口号绑定着特定的协议(有名端口号),所以选用那个协议收发数据也是默认的,按照端口号来确定的。
2,UDP协议的特点
要将UDP协议的特点,首先要明确的一点便是UDP协议没有发送数据的缓冲区只有收取数据的缓冲区。UDP的发送是由内核来完成的,所以在使用UDP协议收发消息时便会发生以下情况:UDP协议的收取数据的缓冲区满了但是处理不过来,所以就会出现丢包的现象,并且UDP协议没有确认机制所以UDP协议的一大特点便是------不可靠。
UDP的其它特点:
1,无连接(建立通信时不需要connect和attact)。
2,面向数据报(UDP协议的数据都是一次性发送的,不会将数据分开发送)