答:HTTP/1.1 提供八种方法以不同的方式操作指定的资源。分别是
- OPTIONS:这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。
- HEAD:与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。
- GET:向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问。参见安全方法
- POST:向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。
- PUT:向指定资源位置上传其最新内容。
- DELETE:请求服务器删除Request-URI所标识的资源。
- TRACE:回显服务器收到的请求,主要用于测试或诊断。
- CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。
答:状态代码的第一个数字代表当前响应的类型,主要为五类
- 1xx消息——请求已被服务器接收,继续处理
- 2xx成功——请求已成功被服务器接收、理解、并接受
- 3xx重定向——需要后续操作才能完成这一请求
- 4xx请求错误——请求含有词法错误或者无法被执行
- 5xx服务器错误——服务器在处理某个正确请求时发生错误
详细情况见 维基百科。
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
答:按照通信过程的收发端来划分,可以将整个过程分成四个部分-客户端请求、服务端回复、客户端回应以及服务器回应。
- 客户端发出握手请求 (Client Hello),包含以下信息:
- 支持的协议版本,比如TLS 1.0
- 一个客户端生成的随机数(random_1),这个随机数既需要客户端保存又需要发送给服务器
- 支持的加密方法,比如RSA公钥加密
- 支持的压缩方法
- 服务器回复 (Server Hello),包含以下信息:
- 确认使用的加密通信协议版本,比如TLS 1.0。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信
- 一个服务器生成的随机数 (random_2)
- 确认使用的加密方法,比如RSA公钥加密
- 服务器证书(其中包含服务器放入公钥)
- 可选:如果服务器需要确认客户端的身份,就会再包含一项请求,要求客户端提供”客户端证书”。比如,金融机构往往只允许认证客户连入自己的网络,就会向正式客户提供USB密钥,里面就包含了一张客户端证书
- 客户端回应,包含以下步骤:
- 验证服务器证书的合法性,证书合法性包括:证书是否过期,发行服务器证书的 CA 是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。如果合法性验证没有通过,通讯将断开
- 客户端使用一些加密算法 (例如:RSA, Diffie-Hellman)产生一个48个字节的 key,这个 key 叫 PreMaster Secret。该 PreMaster Secret 用服务器发来的公钥加密后随同相关内容(如果前一步,服务器要求客户端证书,客户端会在这一步发送证书及相关信息,即客户的证书以及含有签名的随机数)传送回服务器端,防止被窃听
- 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送
- 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验
- 服务器回应,服务器接收到浏览器送过来的消息,用自己的私钥解密,获得 PreMaster Secret。再结合另外两个随机数 random_1 和 random_2,计算出本次会话的会话密钥 (session secret),然后向客户端发送下面信息:
- 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送
- 服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验
在四个过程结束之后,握手阶段结束。接下来,客户端和服务端进入加密通信阶段,该阶段的通信采用普通的 HTTP 协议,只不过双方都采用相同的会话密钥对会话内容进行对称加密和解密。
需要注意的是非对称加解密算法的效率要比对称加解密要低的多。所以 SSL 在握手过程中使用非对称密码算法来协商密钥,实际使用对称加解密的方法对 HTTP 内容加密传输。下图为 SSL 连接建立过程详解图。
答:
- OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
- TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。
- 五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。
- 每一层的协议如下:
- 物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器)
- 数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机)
- 网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)
- 传输层:TCP、UDP、SPX
- 会话层:NFS、SQL、NETBIOS、RPC
- 表示层:JPEG、MPEG、ASII
- 应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
- 每一层的作用如下:
- 物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)
- 数据链路层:将比特组装成帧和点到点的传递(帧Frame)
- 网络层:负责数据包从源到宿的传递和网际互连(包PackeT)
- 传输层:提供端到端的可靠报文传递和错误恢复(段Segment)
- 会话层:建立、管理和终止会话(会话协议数据单元SPDU)
- 表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)
- 应用层:允许访问OSI环境的手段(应用协议数据单元APDU)
答:A 类地址:以0开头, 第一个字节范围:0126(1.0.0.0 - 126.255.255.255);B 类地址:以10开头, 第一个字节范围:128191(128.0.0.0 - 191.255.255.255);C 类地址:以110开头, 第一个字节范围:192~223(192.0.0.0 - 223.255.255.255)。其中,10.0.0.0—10.255.255.255,172.16.0.0—172.31.255.255,192.168.0.0—
192.168.255.255 为 Internet 上保留地址用于内部。
答:
- ICMP协议: 因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
- TFTP协议: 是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。
- HTTP协议: 超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
- DHCP协议: 动态主机配置协议,是一种让系统得以连接到网络上,并获取所需要的配置参数手段。 NAT协议:网络地址转换属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术。
- DHCP协议:一个局域网的网络协议,使用UDP协议工作,用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。
答:TCP 提供面向连接的、可靠的数据流传输,而 UDP 提供的是非面向连接的、不可靠的数据流传输;TCP 传输单位称为 TCP 报文段,UDP 传输单位称为用户数据报;TCP 注重数据安全性,UDP 数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般;TCP 对应的协议和 UDP 对应的协议如下:
TCP 协议
(1) FTP:定义了文件传输协议,使用21端口。
(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
(5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。
UDP协议
(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
(3) TFTP(Trival File Tran敏感词er Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。