WEB开发中常⽤的协议和标准
DNS协议
1、DNS协议的作⽤是将域名解析为IP,⽹络上的每个站点的位置是⽤IP来确定的,访问⼀个⽹站⾸先就要知道它的IP,不过数据组成的IP 记起来不⽅便,所以就使⽤域名来代替IP,由于IP和域名的对应关系经常变化,所以就需要有专门将域名解析为IP的服务器,我们称为:DNS服务器。把域名发给DNS服务器,它就返回相应的IP。在window中可以使⽤nslookup 或者ping 的命令查看DNS解析后的IP。
2、世界各地有很多DNS服务器,ISP(Internat服务提供商)会提供给我们默认的DNS服务器。
TCP/IP协议
1、TCP和IP协议,通常会把他们放在⼀起,其实他们是不同的两种协议,作⽤也不⼀样。
2、IP协议:是⽤来查地址,对应⽹际互联层,TCP协议:是⽤来规范传输规则的,对应的传输层。IP只负责到地址,具体怎么传输是由TCP来完成。类似送快递,货单上填写的地址以及怎么根据填写的地址到客户,这相当于IP协议的功能。⽽具体怎么将货物送过去,最后让客户签收签字就相当于TCP协议。
3、TCP传输前会进⾏三次沟通,我们称为"三次握⼿",传完数据断开的时候进⾏四次沟通,我们称为"四次挥⼿"。
4、TCP重要的概念的:
4.1、序号:seq sequence number的缩写,表⽰所传数据的序号,TCP传输时的每⼀个字节都有⼀个序号,发送数据时会将数据的第⼀个序号发送给对⽅,接收⽅会根据序号check是否接收完整,不完整则会重新传送。保证了数据的完整性。
4.1、确认号:ack:acknoledgement number缩写,表⽰确认号。接收⽅⽤来给发送⽅反馈是否成功接收到数据信息,它的值为希望接收的下⼀个数据包的起始序号,是接收到的seq的值+1;
⽐如:C端发过来的序号seq = x S端返回的ack = x+1
4.2、标志位:SYN 建⽴连接 FIN 断开连接 ACK确认序号有效 RST重置连接。
4.3、ACK:确认位,只有ACK=1的时候ack才起作⽤,正常通信时ACK=1,第⼀次发起请求时,因为没有需要确认接收的数据所以ACK 为0。
4.4、SYN:同步位,⽤于在建⽴连接时同步序号,刚开始建⽴连接时并没有历史接收的数据,所以ac
k也就没办法设置。SYN的作⽤就是,当接收端接收到SYN=1的报⽂时就会将ack设置位接收到的seq+1的值。SYN会在前两次握⼿时都为1,是因为通信的双⽅的ack都需要设置⼀个初始值;
4.5、FIN:终⽌位,⽤来在数据传输完毕后释放连接。
5、三次握⼿流程:
第⼀次握⼿:客户端向服务端发送SYN包,等待服务端响应,并进⼊SYN-SEND状态
第⼆次握⼿:服务端收到SYN包,并确定SYN=ACK+1,然后响应⼀个SYN包和ACK包。客户端进⼊SYN-RECV状态。第三次握⼿:客户端收到服务端SYN+ACK包。向服务器发送确认包ACK。发送完毕进⼊ESTABLISHED状态。
6、四次挥⼿:
第⼀次挥⼿:主动关闭连接⼀⽅,发送FIN包。此时发送FIN包之前发送的数据如果没有发送到。会进⾏重试发送。
第⼆次挥⼿:被动关闭⼀⽅收到FIN包。响应⼀个ACK包。
第三次挥⼿:被动关闭⽅发送⼀个FIN包。告诉被动关闭⽅。数据发送完毕。
第四次挥⼿:主动关闭⽅收到FIN包。发送⼀个ACK包给被动关闭⽅,⾄此四次挥⼿结束,断开连接。
7、为什么要进⾏第三次握⼿?两次不就已经建⽴连接了吗?
servlet和tomcat的关系
为了防⽌服务器端开启⼀些⽆⽤的连接增加服务器开销以及防⽌已失效的连接请求报⽂段由于⽹络延迟突然⼜传送到了服务端,因⽽产⽣错误。
第⼀次握⼿:客户端发起连接请求到服务端。服务端收到请求后响应⼀个请求给客户端,反馈给客户端已接收到请求。可以连接,正常理解这两次握⼿就可以了。为什么还要第三次呢?⽹络具有不稳定性,假如客户端发出去的第⼀个连接请求由于某些原因在⽹络节点中滞留了导致延迟,客户端发出第⼆个请求,然后成功与服务端建⽴连接,然后数据传输完毕,客户端与服务端断开连接。⽽这时第⼀个建⽴请求才到达服务端,其实这是⼀个早已失效的报⽂,但是此时服务端仍然认为这是客户端的建⽴连接请求第⼀次握⼿,于是服务端回应了客户端,第⼆次握⼿,如果只有两次握⼿,那么到这⾥,连接就建⽴了,但是其实客户端并没有任何数据要发送,造成很⼤的资源浪费。所以需要第三次握⼿,只有客户端再次回应⼀下,就可以避免这种情况。
8、为什么建⽴连接需要三次握⼿⽽断开连接要四次挥⼿呢?
建⽴连接的时候:被动⽅服务器端不需要任何准备,再收到第⼀次握⼿客户端的SYNC 后就可以直接第⼆次握⼿返回SYN和ACK报⽂,开始建⽴连接。
断开连接的时候:被动⽅服务器端突然收到主动⽅客户端释放连接的请求时并不能⽴即释放连接,因为还有必要的数据需要处理,所以服务器先返回ACK确认收到报⽂,经过CLOSE-WAIT阶段准备好释
放连接之后,才能返回FIN释放连接报⽂。
9、为什么客户端在TIME-WAIT阶段要等2MSL?
当客户端发出最后的ACK确认报⽂时,并不能确定服务器端能够收到该段报⽂,2MSL是TCP报⽂在传输过程中最⼤⽣命周期。2MSL即是服务器端发出为FIN报⽂和客户端发出的ACK确认报⽂所能保持有效的最⼤时长。服务器端在1MSL内没有收到客户端发出的ACK确认报⽂,就会再次向客户端发出FIN报⽂;
HTTP协议
1、HTTP协议是应⽤层的协议,在TCP/IP协议接受到数据后需要通过HTTP协议来解析后才能使⽤。
2、HTTP中报⽂很重要,报⽂分请求报⽂和响应报⽂两种类型,这两种类型都包括三部分:⾸⾏,头部,主体。请求报⽂的⾸⾏是请求⾏,包括⽅法(请求类型),URL和HTTP版本三项内容,响应请求的⾸⾏是状态⾏,包括HTTP版本,状态码,剪短原因其中原因可有可⽆。头部保存⼀些键值对的属性,⽤冒号分割。主体保存具体内容,请求报⽂中主要保存Post类型的参数,响应报⽂中保存页⾯要显⽰的结果。
3、请求报⽂中的⽅法有:GET、HEAD、POST、PUT、DELETE等
4、响应报⽂常见状态码:
4.1、1XX:信息性状态码。
4.2、2XX:成功状态码。如:200表⽰成功。
4.3、3XX:重定向状态码。如:301表⽰发⽣重定向。
4.4、4XX:客户端错误状态码:如:404表⽰没有到请求的资源。
4.5、5XX:服务端错误状态码:如:500表⽰系统内部错误。
Servlet和JAVA WEB开发
通过TCP/IP协议和HTTP协议可以得到数据,Servlet的作⽤是对接受到的数据进⾏处理并⽣成要返回给客户端的接⼝。Servlet指定了java 处理WEB请求的标准和规范,我们只需按照标准去做就OK了。但规范⾃⼰是不能⼲活的,所以要想使⽤Servlet需要有相应的Servlet容器,常见的Tomcat就是⼀个Servlet容器。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论