1、基本概念和名词
分组交换:利用了存储转发机制,传输前先要接收到完整的分组,有节点处理时延、排队时延、传输时延和传播时延
电路交换:频分、时分、码分等技术。其中码分的总信号Ps = a1P1 + a2P2 + ... + anPn,由接收到的总信号可以得到第i个信号Pi = aiPs,因为ai是正交归一的
OSI七层模型:应用层,(表示层,会话层),运输层,网络层,数据链路层,物理层,TCP/IP有四层
DDOS:分布式拒绝服务攻击,多个计算机对同一个目标发送大量分组或者创建大量TCP连接
SSL:在HTTP和TCP之间加入SSL层,先验证SSL证书(第三方发布)。服务器根据客户端信息确定是否需要生成新的主密钥,如需要客户端根据相应信息生成密钥,用服务器的公钥加密发送,服务器回复该主密钥,并返回给客户端一个用主密钥认证的信息,以此让客户端认证服务器(即用非对称加密协商对称加密密钥)。
MSS:最大报文段长度(应用层报文的最大长度)
RTT:往返时延
MTU:链路层帧能承载的最大数据量(最大传送单元)
MSL:IP数据包在网络上生存的最长时间,TIME_WAIT状态持续2个MSL
其他一些应用层协议:
DNS:域名系统,UDP,53端口
Telnet:远程终端协议,TCP,23端口
TFTP:简单文件传输协议,UDP,69端口
SNMP:简单网络管理协议,UDP,服务端端口161,客户端162
SMTP:简单邮件传输协议,UDP,25端口
POP3:邮局协议版本3,TCP,110端口
IMAP:邮件访问协议,TCP,143端口
以太网:一种基带局域网规范,使用CSMA/CD载波侦听多路访问和冲突检测技术
ISP:互联网服务提供商,因特网由十多个一级ISP和数十万个较低层的ISP组成
2、HTTP
(1)基本概念
默认端口80,HTTPS默认端口443
使用TCP作为运输层协议,不保存客户信息,是一个无状态协议
(2)HTTP1.0,1.1和2.0区别
1.0使用非持续连接,每个请求/响应对经过一个单独的TCP连接
1.1使用持续连接,所有请求/响应对经过同一个TCP连接,请求头增加了Connection通知是否为持续连接,默认是持续连接(keep-alive),新增100(continue)状态码,只发送请求头,如果服务器拒绝返回401 Unauthorized,接受则返回100 Continue,再接着发送实际数据
2.0采用二进制格式而非文本格式;利用多路复用,只需一个连接即可并行传输;对报文头进行了压缩;服务器可以将报文主动推送到客户端
(3)请求头/响应头
请求头:
Get /chapter17/user.html HTTP/1.1 请求的方法、url、协议版本
Accept: text/plain、image/jpeg等,表示客户端接受的响应格式
User-Agent: Mozilla/4.0 浏览器信息
Content-Type: text-plain, application/x-www-form-urlencoded(以键值对编码)等,表示数据编码方式
Host: localhost:8080 主机和端口号
Content-length: 112 报文长度
Connection: Keep-Alive 是否为持续连接
Cache-Control: no-cache 指定响应在客户端的缓存机制
Cookie: 通常包含sessionId,让服务器知道哪些请求属于一个会话
Accept-language: zh-CN
Referer: 表示请求从哪个url发过来
X-Requested-With: 为null表示同步请求,为XMLHttpRequest 则为 Ajax 请求
响应头:
Cache-Control: 告诉客户端是否可以缓存
Status, Connection, Content-Encoding, Content-Language, Content-Length, Content-Type,
Date, Last-Modified, Server, Set-Cookie等
(4)状态码
100 Continue:让客户端继续发送请求,例如之前提到的只有请求头的请求
200 OK
201 Created:请求已被处理,创建了新的资源并返回(多用于put)
202 Accepted:已接收,但未处理,多用于异步场合
300 Mutiple Choices:资源有多个地址,让客户端选择一个地址
301 Moved Permanently:资源被永久转移到新位置,下次访问资源时浏览器一般会直接定位到新位置
302 Moved Temporarily:资源被暂时转移,下次访问默认还是访问第一次访问的地址
303 See Other:细化了301和302,如果原请求是POST则改用GET
304 Not Modified:客户端发送了条件GET且资源未被修改,则不返回实际数据,只返回报文头,客户端使用缓存
305 Use Proxy:被请求的必须通过指定的代理才能访问
400 Bad Request:请求参数有误
401 Unauthorized:当前请求需要用户验证
403 Forbidden:服务器理解了请求但拒绝执行,在实体内描述原因。不同于401,不是身份认证的问题,即使认证了身份也没用
404 Not Found:找不到资源,或者服务器不想告知请求为什么被拒绝
405 Method Not Allowed:大部分服务器不允许PUT,DELETE
500 Internal Server Error:通常是服务器源码出错
501 Not Implemented:无法识别请求方法
502 Bad Gateway:作为网关或者代理的服务器尝试执行请求时,从上游服务器接收到无效响应
503 Service Unavailable:服务器维护或过载,是临时的
504 Gateway Timeout:作为网关或者代理的服务器尝试执行请求时,从上游服务器获取响应超时
505 HTTP Version Not Supported
3、FTP
使用两个并行的TCP连接。数据连接端口20,非持续连接;控制连接端口21,持续连接,追踪用户。
4、SMTP,POP3,IMAP
SMTP报文只能采用7比特ASCII码,是一个推协议,从客户端推送到服务器
POP3、IMAP是拉协议,从服务器获取邮件。POP3不能为邮件创建、指定文件夹;IMAP则维护了会话的用户状态信息,例如文件夹名字和文件夹内的报文
5、DNS
主机名几乎没有提供主机的位置信息,需要DNS域名系统,由分层的DNS服务器实现的分布式数据库,运行在UDP上,53端口,建立在UDP上主要是为了不引入建立连接的时延。浏览器、本地DNS服务器有DNS缓存。DNS也可以查询主机别名。
主机向本地DNS服务器查询一般采用递归查询,即由本地DNS服务器代由主机进行查询;本地DNS服务器向根服务器采用迭代查询,即依次询问各级DNS服务器。