1 HTTP回复状态码:
答:1.200:成功;2.301:永久重定向,302:临时重定向;3.400:服务器不理解请求语法(访问参数错误),403:服务器拒绝访问(权限不够),404:服务器找不到网页;4.500:服务器内部出错,502:网关出错,503:服务不可用。
200 OK //客户端请求成功
301 Moved Permanently //永久重定向,使用域名跳转
302 Found // 临时重定向,未登陆的用户访问用户中心重定向到登录页面
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起 使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
2 HTTP请求报文格式
答:HTTP报文是面向文本的,报文中每一个字段都是一些ASCII码串,各个字段长度都不确定。
HTTP请求报文:报文有,请求行(request-line)、请求头部(headers)、空行(blank line)、请求数据(request-body)四个部分组成。
HTTP协议请求方法:GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。GET方法要求服务器把URL定位的资源放在响应报文的数据部分,回送给客户端。请求参数和对应的值都附加在URL后面,用“?”隔开,参数之间用“&”隔开,传递长度受限制,不适合传送私密数据和大量数据。POST将请求数据封装在HTTP的请求数据中,以名称/值的形式出现,可以传输大量数据。其中,URL长度限制每个不同的浏览器不同,比方说IE是2k+35个字节,不是协议本身对URL限制的。Tomcat对POST限制为2M。
例如:GET /search?id=hp&psw=123456 HTTP/1.1
2.请求头部:关键字/值对组成,每行一对,关键字和值用“:”隔开。典型头有:Host,请求的主机名;Accept,客户端可识别的内容类型列表。User-Agent,产生请求的浏览器类型。
3.空行:最后一个请求头之后是一个空行,通知服务器不再有请求头。
4.请求数据:POST中把数据放在请求数据中。
3. HTTP方法比较
get:客户端向服务端发起请求,获得资源。请求获得URL处所在的资源。
post:向服务端提交新的请求字段。请求URL的资源后添加新的数据。
head:请求获取URL资源的响应报告,即获得URL资源的头部
patch:请求局部修改URL所在资源的数据项
put:请求修改URL所在资源的数据元素。
delete:请求删除url资源的数据
4 HTTP响应报文:
答:1.HTTP响应报文有,状态行(status-line),消息报头(headers),响应正文(blank line)三部分构成。
2.状态行格式:HTTP版本 状态码 状态码的文本描述。
例如:HTTP/1.1 200 OK
5 TCP协议和UDP协议。
答:1.TCP协议是面向连接的,而UDP是无连接的。2.TCP保证数据传输的可靠性和顺序性,而UDP无法保证。3.TCP报文头结构复杂至少占用20字节,系统开销大,而UDP只有8字节(源和目的端口号、用户数据长度、校验和)。4.TCP报文有可能拆分发送,而UDP报文不会拆分也不会合并,保留了报文的边界,所以不会出现粘包问题
6 TCP如何保证可靠传输的。
答:1.应用数据被分割成TCP认为最合适发送的数据块;
2.当TCP发出一个段后,它就启动一个定时器,等待目的端确认收到这个报文,如果不能及时收到一个确认,将重发这个报文段(超时重发)。3.当TCP收到发自TCP连接另一端的数据,它先对接收到数据进行校验,对首部和数据部分都校验,如果没有差错就发送确认响应;如果有差错,就丢弃报文段,不发送确认响应,希望发送端超时重发。
4.TCP基于IP数据报传输,所以到达可能会失序,所以要TCP将对收到数据进行重新排序(对失序数据进行重新排序,然后交给应用层);同时也可能接收到重复数据,会对重复数据丢弃(对重复数据丢弃)。这些都是通过序号和确认号来实现的。
5.TCP提供流量控制,防止缓冲区溢出,采用的是可变大小的滑动窗口协议。
7 TCP的半关闭。
1.半关闭:TCP提供了连接的一端在结束它的发送后还能接收到来自另一端数据的能力,这就是半关闭。客户端发送FIN之后,就进入半关闭状态。
2.TCP每个连接都管理四个定时器:1.重传定时器;2.坚持定时器:是窗口大小信息保持不断流动,即使另一端关闭了其接收窗口;3.保活定时器:可检测到一个空闲连接的另一端何时崩溃或重启;4.2MSL定时器。
8 OSI七层:
答:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
3.物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)
4.数据链路层:将比特组装成帧和点到点的传递(帧Frame)
5.网络层:负责数据包从源到宿的传递和网际互连(包PackeT)
6.传输层:提供端到端的可靠报文传递和错误恢复(段Segment)
7.会话层:建立、管理和终止会话(会话协议数据单元SPDU)
8.表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)
9.应用层:允许访问OSI环境的手段(应用协议数据单元APDU)
1.物理层:RJ45、CLOCK、IEEE802.3(中继器,集线器)
2.数据链路层:PPP、FR、HDLC、VLAN、MAC (网桥,交换机)
3.网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)
4.传输层:TCP、UDP、SPX
5.会话层:NFS、SQL、NETBIOS、RPC
6.表示层:JPEG、MPEG、ASII
7.应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
9 IP分类:
A类地址:以0开头, 第一个字节范围:0~127(1.0.0.0 - 126.255.255.255);
B类地址:以10开头, 第一个字节范围:128~191(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上保留地址用于内部)
IP=网络号+子网号+主机号;子网掩码和IP相与就得到了网络号,而子网号的位数等于网络号减掉实际IP段网络号,主机号位数等于32-网络号-子网号。例如:IP是141.14.72.24,子网掩码是255.255.192.0;这是一个B类地址,所以默认网络号为16位,然后IP和子网掩码相与得到第三个8位段为01000000,也就是说子网号占两位,那么主机号就占32-16-2=14位;网络地址就是相与的结果,也就是141.14.64.0.同理,如果子网掩码是255.255.224.0,那么网络地址还是一样,但是子网号为3位,主机号为13位,主机数量就少了。
128.14.35.7/20这样的表示方法是指前20位是网络前缀,所以后12位为主机号。也就是说这段地址最小地址是128.14.32.0,最大地址是128.14.47.255.
10 TCP建立三次握手,关闭四次挥手。
答:三次握手:客户端给服务器发送SYN报文,也就是SYN=1,然后进入SYN-SEND状态;然后服务端发送SYN+ACK报文,也就是SYN=1,ACK=1,服务端进入SYN-RCVD状态;然后客户端会发送确认报文ACK,客户端进入ESTABLISHED状态,服务端接收到ACK报文也进入ESTABLISHED状态,然后他们之间就可以相互传输数据了。
四次挥手:客户端发送FIN报文,也就是FIN=1,然后进入FIN-WAIT1状态;服务端接收到FIN报文,回发一个ACK报文,自身进入CLOSE-WAIT状态;客户端接收到ACK报文后,就进入FIN-WAIT2状态;服务端然后发送FIN报文,自身进入LAST-ACK状态;客户端接收到FIN报文,然后发送ACK报文,进入到TIME-WAIT状态,然后等待2MSL(最大报文段生存时间)后关闭;服务端接收到ACK报文然后就关闭了。
备注:1.三次握手中有两次确认,这是防止已失效的报文被重新传送造成错误。比方说A的报文在某个网络节点延时了,但是没有被丢弃,然后重新发送给了B,如果这时没有第二次确认,那么B对接收到的失效的报文也要建立连接,但是实际上A并没有发送,造成了B资源的浪费。
2.建立时三次,关闭时为什么要四次。因为建立时,服务端的同步和应答SYN和ACK是同时回传给客户端的,但是关闭时,由于服务端有可能还有未接收完的信息,所以不能直接关闭,但是要给客户端响应,所以只能先发一个ACK报文,然后等处理完所有信息之后,才能给客户端发一个FIN报文告诉客户端可以关闭了。
三挥手四握手
TCP的有限状态机:可以说明结束的时候有三种情况,一种是正常的关闭,如上图所示,经历的是FIN-WAIT1->FIN-WAIT2->TIME-WAIT->CLOSED;还有第二种是如果服务端没有要发送的内容,那么收到客户端的FIN后,直接发送ACK+FIN,所以经历的状态是FIN-WAIT1->TIME-WAIT->CLOSED。第三种情况是如果两方同时发送FIN的话,那么直接就发送ACK,经历的状态FIN-WAIT1->CLOSING->TIME-WAIT->CLOSED。
11.TCP报文格式:
答:1.端口号用来标识同一台计算机不同进程。
2.序列号是该报文段首字节的字节流编号,比方说报文被分解成多个报文时,序列号就是报文段首字节在整个报文中的偏移量。
3.确认号是下一个期待的字节,比方说A从B里接收到了100个字节数据了,那么他的确认号就是101,这是他期望从B中获取的下一个字节编号。
4.首部长度为4位,单位是32位字,所以最多存的是4*15=60字节。由于5个是固定的20字节,所以选项长度最大为40字节,也就是10个选项。
5.标志位:URG:指示报文段里存在这被发送方的上层实体标记为“紧急”的数据,URG=1时,其后的紧急指针指示紧急数据在当前数据段的位置,也就是相对于当前序列号的字节偏移量,TCP接收方必须通知上层实体。ACK:ACK=0时该数据段不包含确认信息;ACK=1时该报文段包含一个对已被成功接收报文段的确认。PSH:当PSH=1时接收方在接收到数据后立即将数据交给上层,而不是直到整个缓冲区满。RST:用于重置一个已经混乱的连接,也可以用来拒绝一个无效的数据段或者拒绝一个连接请求。一般而言,如果你得到数据段被设置了RST,说明你这端有问题。SYN:用来建立连接过程,SYN=1和ACK=0说明数据段没有使用捎带的确认域,都等于1时说明连接应答捎带了一个确认。
FIN:用于释放一个连接,表示发送方已经没有数据要传输了。
6.窗口大小:用于流控制,窗口大小指定了从被确认的字节算起可以发送多少字节,确保连接的任何一方都不会过快地发送过量的分组而淹没另一方。
7.校验和:提供额外的可靠性。TCP的checksum域为0,如果数据域字节数为奇数就额外加一个0字节。(校验和算法:将所有的16位字取反码累加,取累加结果作为校验和。接收方也同样计算,结果应该全为1.(不确定))
12 TCP粘包问题。
答:TCP粘包是在一次接收数据不能完全体现一个完整的消息数据。粘包原因:1.发送端需要等待缓冲区满才发送出去造成粘包;2.接收方不及时接收缓冲区的包,造成多个包接收。解决方案:1.发送端编程设置有数据就立即发送;接收端优化程序设计、精简接收进程工作量、提高接收进程优先级等及时接收数据包;还可以接收方控制,把一包数据按结构字段人为控制分为多次接收,然后合并。(封包和拆包)2.制定应用层的数据通信协议,通过协议规范接收的数据。比方说用4字节描述消息大小,或者制定结束符。
13 在浏览器输入<u>www.baidu.com</u>后执行过程。
答:1、客户端浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层。
2、在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。
3、客户端的网络层不用关心应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,我不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。
4、客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。
14 TCP和UDP对应的协议
TCP对应的协议:
(1) FTP:定义了文件传输协议,使用21端口。
(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
(5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。80端口
UDP对应的协议:
(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
(3) TFTP(Trival File Tran敏感词er Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。
15 DNS。
当DNS客户机需要在程序中使用名称时,它会查询DNS服务器来解析该名称。客户机发送的每条查询信息包括三条信息:包括:指定的DNS域名,指定的查询类型,DNS域名的指定类别。基于UDP服务,端口53. 该应用一般不直接为用户使用,而是为其他应用服务,如HTTP,SMTP等在其中需要完成主机名到IP地址的转换。
网友评论