一、概述
计算机网络协议是有关计算机网络通信的一整套规则,或者说是为完成计算机网络通信而制定的规则、约定和标准。
二、组成
- 语法
通信数据和控制信息的结构和格式 - 语义
对具体事件发出什么控制消息,完成什么动作以及做出什么样的应答 - 时序
对事件实现顺序的详细说明
三、TCP/IP各层以及常用协议介绍
应用层
1、http协议
超文本传输协议,定义了万维网客户端程序(应用程序)怎么向万维网请求万维网文档,以及服务器如何把万维网文档传输给应用程序
- http协议是明文传输,不安全
- 默认端口是80
-
特点
1.支持客户端/服务器模式(应答模式)
2.无连接
每次连接只处理一次请求,服务器在处理完客户端发送的请求并收到服务端的应答之后,就断开连接。采用这种方式可以节省传输资源
3.无状态
http协议对于事务处理没有记忆能力
4.简单快速
用户在向服务器请求服务时,只需要传送请求方法和路径。由于http协议简单,使得http服务器的程序规模小,因而通信速度快 - 工作过程
1.分析请求链接中的url
2.首先在本机进行DNS解析:查看本地的host文件,查看是否有该域名和对应的IP地址,如果找到,则到步骤4
3.如果步骤2没有找到,则继续向最近的DNS域名解析服务器请求解析该域名的IP地址,如果没有,则再发送请求到上一级的DNS域名解析服务器进行解析(本地DNS=>权威DNS=>顶级DNS=>13组根DNS)
4.步骤2、步骤3解析得到请求连接中的域名对应的IP地址
5.用户地址向这个IP地址的服务器发出请求、建立连接、得到响应回来的资源、释放连接【TCP的三次握手四次挥手】
总结:发送请求 => DNS域名解析,把域名解析成IP地址 => TCP协议三次握手建立连接拿到资源,四次挥手释放连接 - 幂等性
HTTP 幂等方法,是指无论调用多少次都不会有不同结果的 HTTP 方法。不管你调用一次,还是调用一百次,一千次,结果都是相同的。 - 常用请求方式
1.get
传送的参数在消息头中,跟在url后面,可以在浏览器地址栏看得到,不安全,一般用于资源请求;
由于参数跟在url后面,并且不同浏览器对url的长度有限制,所以get所带的参数的长度是有限制的,具体限制视浏览器而定(IE是2083个字节,可能版本更新会支持更长);
是幂等性方法,用于获取资源,不管调用多少次接口,结果都不会改变
2.post
传送的参数在消息体,在浏览器地址栏看不到,需要抓包才能看到,比较安全;一般用于表单提交;
传送的参数大小无限制,速度比url慢;
是非幂等方法,所以用来表示新增操作,但是有时候如果url够长,也会用post方法来进行
post请求有时候会触发先发送options方法,比如说跨域时,options请求会先进行CORS预检请求。具体可通过请求header看出是否会触发options请求,具体可百度。
3.options
它是一种探测性的请求,通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。
2、https协议
安全超文本传输协议,由http+ssl/tls组成。ssl协议是安全套接字层,在http协议的基础上通过SSL/TLS提供加密处理数据、验证对方身份以及数据完整性保护。
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
其工作效率是http的十分之一,所以看情况来使用
- 默认端口是443
3、ftp协议
文本传输协议
- 默认端口是20、21
4、smtp协议
简单邮件传输协议,一般发邮件都是这个协议
- 默认端口是25
5、dns协议
域名解析协议,在传输层提供支持的是UDP协议。
-
默认端口是53
-
例如,你要访问“www.apple.com”,就要进行下面的三次查询:
- 访问根域名服务器,它会告诉你“com”顶级域名服务器的地址;
- 访问“com”顶级域名服务器,它再告诉你“apple.com”域名服务器的地址;
- 最后访问“apple.com”域名服务器,就得到了“www.apple.com”的地址。
6、ssh协议
ssh是建立在应用层和传输层基础上的安全协议;
可靠的,专为远程登录会话和其它网络服务提供安全性的协议。利用它可以有效防止远程管理过程中的信息泄漏问题
- 默认端口是22
7、DHCP协议
动态主机配置协议,用于分配IP地址
- IP地址和MAC地址区别
网卡在出厂时拥有唯一的MAC地址
IP地址是动态分配的,因为之前使用IPV4,IP地址有限,现在启用了IPV6
2、传输层
1、tcp协议
2、udp协议
相关内容较多,下一章写
3、网络层
1、ip协议
ip协议是为了计算机网络互相连接进行通信而设计的协议,是TCP/IP协议簇中最为核心的协议。所有类型的数据都以IP数据报格式进行传输的
- ip协议提供不可靠、无连接的数据报传输
- ip地址是动态的:当计算机进行联网的时候,首先会发送请求给最近的IP授权服务器,查找上一次该台计算机所使用的IP地址是否被占用了,如果被占用了,则重新分配一个新的空闲IP地址(现在IPV6开始使用了)
- 协议号是4
2、icmp协议
网络控制报文协议,一种特殊的网络层协议。可以在应用层直接使用,跳过传输层(windows系统可以在小黑板使用对应命令)
-
ping
命令
格式:ping 域名/IP
,更多参数百度
作用:给指定目标发送4个icmp包,确定该目标的存在和连通性;通常用于检测当前计算机的网络或目标计算机的网络是否正常 -
tracert
命令
格式:tracert域名/IP
,更多参数百度
作用:用来查看从当前计算机到达目标IP的计算机,需要经过多少个节点(路由器)
3、 igmp协议
英特网组管理协议,其它没了解
4、链路层
1、ARP协议
地址解析协议
- 作用
把IP地址解析成MAC地址(以太网中,需要知道目标机器的MAC地址才能建立通信) - 原理
1.主机A => 查找自己的ARP缓存是否有目标IP的ARP =>找到就直接和主机B建立连接;
2.主机A =>查找自己的ARP缓存是否有目标IP的ARP =>找不到,就发送ARP请求=>主机B接收到=>把主机A的IP和ARP记录(ARP项)下来,并响应ARP答复给主机A=>主机A收到响应=>记录主机B的ARP项。 - 命令
arp -a
查看本机的ARP缓存中的IP地址和MAC地址的列表
2、RARP协议
反向地址转换协议,和arp协议相反,可以将mac地址转换成ip地址
四、端口
1、概念
网络技术中,端口有两种意思
- 物理意义上的端口,比如:交换机、路由器等用于连接其它网络设备的接口
- 逻辑意义上的端口,一般指的是TCP/IP协议中的端口,端口号从0-655355,一共2^16个
2、端口分类
- 公认端口
从0-1023;紧密绑定于一些服务。通常这些端口的通讯明确表名了某种服务的协议 - 注册端口
1024-49151;松散地绑定于一些服务。也就是说有许多服务绑定于这些端口 - 动态和私有端口
49152-65525,机器通常从1024开始分配动态端口
3、常用端口
-
80
服务:http协议
分配给web服务器,用于网页浏览 -
443
协议:https协议
提供加密和安全传输的另一种http,用于网页浏览
- 8080
访问某个开启了8080端口的网站时,需要在域名/ip后面加上:8080,用于网页浏览
-
20、21
服务:ftp协议
用于文件上传和下载 -
22
服务:SSH协议
SSH协议是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议
-
23
服务:Telnet协议
Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式
对应的命令是telnet
,也可用于查看目标IP端口是否开启:telnet IP地址 端口
-
25
服务:SMTP协议
邮件传输协议
五、一些概念
1、访问网站的本质
本质上来说,访问任何一个网站,都是通过目标服务器的IP和端口号的组合来实现访问的;比如:http://www.xxx.com:xx
- 步骤
1、用户在浏览器输入:www.baidu.com
2、程序处理:http://www.baidu.com/
3、经过DNS解析,域名解析成IP,实际访问:http://180.97.33.108:80
DNS解析过程:浏览器缓存->操作系统缓存->hosts文件->dns
2、长连接和短连接
- 短连接
199X年时所使用的技术,发送一次请求,获取整个请求目标(网页)的一部分资源,发送多次请求后,获取到全部资源。
比如说:第一次请求,获取到html资源,然后该网页还有CSS,JS等资源,所以继续发送请求来获取这些,直到全部获取完毕。【每一次发送的请求都是短连接,运用的是TCP协议;后来的网站过于复杂,所以弃用,因为TCP协议的连接和释放要经过三次握手和四次挥手,不适合这样频繁地发送请求】 - 长连接
现在使用的技术(Keep-Live信息段);客户端发送请求后,先把html文件获取到,但如果还有CSS,JS等资源,则不断开连接,继续获取,直到获取完毕后,才断开连接【TCP协议】
比如说websocket协议也是长连接协议;
3、域名的好处
IP地址比较难记,域名便于记忆
网友评论