95
95
< meta property ="og:image " content ="http://img.hyhcoder.top/18-1-21/18937008.jpg ">
96
96
< meta property ="og:image " content ="http://img.hyhcoder.top/18-1-21/23259117.jpg ">
97
97
< meta property ="og:image " content ="http://img.hyhcoder.top/18-1-21/7995488.jpg ">
98
- < meta property ="og:updated_time " content ="2018-01-21T08:54:01.401Z ">
98
+ < meta property ="og:updated_time " content ="2018-01-21T12:19:43.273Z ">
99
99
< meta name ="twitter:card " content ="summary ">
100
100
< meta name ="twitter:title " content ="JavaWeb(一)网络分层结构及HTTP协议 ">
101
101
< meta name ="twitter:description " content ="学习Java web的第一步, 肯定要先了解的是当今网络的运行情况; 以及弄懂当今最流行的Http协议究竟是什么? 网络分层首先说下网络分层, 如果现在让你去从头开发一个web通信工具, 你需要考虑什么? 首先你需要考虑把数据怎么分成一个个数据包, 然后要考虑这些数据包要怎么传输, 怎么到达你想要它去的那个地方, 然后还要考虑接收端如何接收这些数据, 解码出来要的数据, 最后还原成想要的最终效果 ">
@@ -388,14 +388,15 @@ <h3 id="网络分层"><a href="#网络分层" class="headerlink" title="网络
388
388
< p > 这些会让你觉得很繁琐, 你不外乎可能只是想要发送一句话过去其他客户端, 就要一下子考虑怎么多事情, 还有就是网络的传输什么都非常复杂, 万一哪里有了变动, 就全部程序都要重写, 因此, 出现了分层参考模型, 就像面向对象一样, 把每一层都封装好, 然后对每一层开发接口就可以了, 这样每一层只要负责好自己的事情就可以了, 不用每次都全部考虑。</ p >
389
389
< p > 基于此, ISO指定了一个OSI参考模型(七层) , 这可以说是一个理想化的模型,里面把每个层次都分了出来,虽清晰, 但太多层会导致复杂化,也不便于管理,因此后面又由技术人员开发了TCP/IP参考模型(四层),大大简化了层次,这也使得TCP/IP协议得到广泛的应用。</ p >
390
390
< ul >
391
- < li > < p > 对于OSI参考模型:(用维基百科的图片说明)< br > < img src ="http://img.hyhcoder.top/18-1-21/66496673.jpg " alt =""> </ p >
392
- </ li >
393
- < li > < p > 而TCP/IP就大大简化了层次, 对比关系如下:(我们平时用的最多的Http是在应用层)< br > < img src ="http://img.hyhcoder.top/18-1-21/61282413.jpg " alt =""> </ p >
394
- </ li >
391
+ < li > 对于OSI参考模型:(用维基百科的图片说明)< br > < img src ="http://img.hyhcoder.top/18-1-21/66496673.jpg " alt =""> </ li >
392
+ </ ul >
393
+ < a id ="more "> </ a >
394
+ < ul >
395
+ < li > 而TCP/IP就大大简化了层次, 对比关系如下:(我们平时用的最多的Http是在应用层)< br > < img src ="http://img.hyhcoder.top/18-1-21/61282413.jpg " alt =""> </ li >
395
396
</ ul >
396
397
< p > 从上面我们就可以看出整个网络模型分层后, 我们只要按照各自的协议考虑各自当前层的问题就可以愉快的编程了;< br > 比如一开始的发送例子, 我们只是想编写在应用层的程序,所以根本无需考虑下面其他分层传输数据包等的事情,只要遵循好协议发送数据即可,其他都交给其他层的程序考虑,而在应用层我们所用的协议最多的就是Http协议了, 至于http协议怎么和传输层进行协助, 我们可以不用关心, 有兴趣的可以去读<< tcp ip详解(卷一) =""> >;</ tcp > </ p >
397
398
< p > 如果要通俗的去讲就是我们首先发送的是HTTP协议报文, 然后会转换成TCP/IP协议的数据包, 然后根据IP地址进行传输, 到客户端又重新变成TCP/IP协议的数据包, 再变成HTTP协议报文, 返回到客户端。如下, 每过一层会加一层首部,接收时再逐个去掉。< br > < img src ="http://img.hyhcoder.top/18-1-21/18937008.jpg " alt =""> </ p >
398
- < h2 id ="HTTP协议 "> < a href ="#HTTP协议 " class ="headerlink " title ="HTTP协议 "> </ a > HTTP协议</ h2 > < p > 因为Java web的编程很少接触到底层的协议实现,所以我们把关注点放在掌握应用层协议会更好,而当今基本上我们接触到的应用层协议最多的就是HTTP协议, 你打开一个网站,基本都是HTTP开头的;</ p >
399
+ < h3 id ="HTTP协议 "> < a href ="#HTTP协议 " class ="headerlink " title ="HTTP协议 "> </ a > HTTP协议</ h3 > < p > 因为Java web的编程很少接触到底层的协议实现,所以我们把关注点放在掌握应用层协议会更好,而当今基本上我们接触到的应用层协议最多的就是HTTP协议, 你打开一个网站,基本都是HTTP开头的;</ p >
399
400
< p > 那掌握HTTP协议(Hyper Text Transfer Protocol 超文本传输协议)对于我们编写web程序非常关键。</ p >
400
401
< h4 id ="本质:-基于TCP-IP通信协议来传递数据的协议 "> < a href ="#本质:-基于TCP-IP通信协议来传递数据的协议 " class ="headerlink " title ="本质: 基于TCP/IP通信协议来传递数据的协议; "> </ a > 本质: 基于TCP/IP通信协议来传递数据的协议;</ h4 > < h4 id ="特点 "> < a href ="#特点 " class ="headerlink " title ="特点: "> </ a > 特点:</ h4 > < ol >
401
402
< li > 简单快捷: 客户端向服务端请求服务时, 只要传送请求方法和路径。</ li >
@@ -417,7 +418,7 @@ <h4 id="HTTP工作原理"><a href="#HTTP工作原理" class="headerlink" title="
417
418
< li > 释放连接TCP连接;< br > 若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;</ li >
418
419
< li > 客户端浏览器解析HTML内容< br > 客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。</ li >
419
420
</ ol >
420
- < p > ## 总结:< br > 网络的分层使得网络编程变得十分的便捷,Java Web的编程可以说是作用与应用层的,所以我们必须要了解掌握应用层应用最广的HTTP协议,所有的网络请求基本都是基于HTTP请求。</ p >
421
+ < h2 id =" 总结: " > < a href =" # 总结:" class =" headerlink " title =" 总结: " > </ a > 总结: </ h2 > < p > 网络的分层使得网络编程变得十分的便捷,Java Web的编程可以说是作用与应用层的,所以我们必须要了解掌握应用层应用最广的HTTP协议,所有的网络请求基本都是基于HTTP请求。</ p >
421
422
< p > 参考文章:</ p >
422
423
< ol >
423
424
< li > < a href ="https://zh.wikipedia.org/wiki/OSI%E6%A8%A1%E5%9E%8B " target ="_blank " rel ="external "> OSI模型–维基百科</ a > </ li >
@@ -625,7 +626,7 @@ <h4 id="HTTP工作原理"><a href="#HTTP工作原理" class="headerlink" title="
625
626
626
627
627
628
628
- < div class ="post-toc-content "> < ol class ="nav "> < li class ="nav-item nav-level-3 "> < a class ="nav-link " href ="#网络分层 "> < span class ="nav-number "> 1.</ span > < span class ="nav-text "> 网络分层</ span > </ a > </ li > </ ol > </ li > < li class ="nav-item nav-level-2 "> < a class ="nav-link " href ="#HTTP协议 "> < span class ="nav-number "> </ span > < span class ="nav-text "> HTTP协议</ span > </ a > < ol class ="nav-child "> < li class ="nav-item nav-level-4 "> < a class ="nav-link " href ="#本质:-基于TCP-IP通信协议来传递数据的协议 "> < span class ="nav-number "> 0.1.</ span > < span class ="nav-text "> 本质: 基于TCP/IP通信协议来传递数据的协议;</ span > </ a > </ li > < li class ="nav-item nav-level-4 "> < a class ="nav-link " href ="#特点 "> < span class ="nav-number "> 0.2.</ span > < span class ="nav-text "> 特点:</ span > </ a > </ li > < li class ="nav-item nav-level-4 "> < a class ="nav-link " href ="#消息格式:(具体的可以自己打开浏览器,按F12进行查看) "> < span class ="nav-number "> 0.3.</ span > < span class ="nav-text "> 消息格式:(具体的可以自己打开浏览器,按F12进行查看)</ span > </ a > </ li > < li class ="nav-item nav-level-4 "> < a class ="nav-link " href ="#HTTP工作原理 "> < span class ="nav-number "> 0.4.</ span > < span class ="nav-text "> HTTP工作原理</ span > </ a > </ li > </ ol > </ li > </ ol > </ div >
629
+ < div class ="post-toc-content "> < ol class ="nav "> < li class ="nav-item nav-level-3 "> < a class ="nav-link " href ="#网络分层 "> < span class ="nav-number "> 1.</ span > < span class ="nav-text "> 网络分层</ span > </ a > </ li > < li class ="nav-item nav-level-3 "> < a class ="nav-link " href ="#HTTP协议 "> < span class ="nav-number "> 2.</ span > < span class ="nav-text "> HTTP协议</ span > </ a > < ol class ="nav-child "> < li class ="nav-item nav-level-4 "> < a class ="nav-link " href ="#本质:-基于TCP-IP通信协议来传递数据的协议 "> < span class ="nav-number "> 2.1.</ span > < span class ="nav-text "> 本质: 基于TCP/IP通信协议来传递数据的协议;</ span > </ a > </ li > < li class ="nav-item nav-level-4 "> < a class ="nav-link " href ="#特点 "> < span class ="nav-number "> 2.2.</ span > < span class ="nav-text "> 特点:</ span > </ a > </ li > < li class ="nav-item nav-level-4 "> < a class ="nav-link " href ="#消息格式:(具体的可以自己打开浏览器,按F12进行查看) "> < span class ="nav-number "> 2.3.</ span > < span class ="nav-text "> 消息格式:(具体的可以自己打开浏览器,按F12进行查看)</ span > </ a > </ li > < li class ="nav-item nav-level-4 "> < a class ="nav-link " href ="#HTTP工作原理 "> < span class ="nav-number "> 2.4.</ span > < span class ="nav-text "> HTTP工作原理</ span > </ a > </ li > </ ol > </ li > </ ol > </ li > < li class ="nav-item nav-level-2 "> < a class ="nav-link " href ="#总结: "> < span class ="nav-number "> </ span > < span class ="nav-text "> 总结:</ span > </ a > </ div >
629
630
630
631
631
632
</ div >
0 commit comments