一、简单介绍学习想法
经常在企业的面试的上写着熟悉HTTP协议/,Tcp/IP协议,这些对于我来说只是知道是什么,知道一个三次握手,但是具体是怎么玩真很不清晰。对于处于迷茫期我的想真真实实的了解一下这些东西,了解一下web请求原理的这一些东西,为自己以前睡过的觉买单,为新到来的2017年一起奋斗,为.net web事业奋斗,当然也要批评一下我萌生转java的想法,2017年我要坚定的我的道路,学习新的知识core+linux,还有这些协议方面的东西,另外MVC也想读基本好书,希望大家给推荐一下。
二、网络协议的简单介绍
这只是个开篇我计划将我学习一步一步介绍给大家,先是介绍HTTP协议,但是这个之前我先简答介绍TCP/IP,先对这个有一个简单的了解之后我们开始学习HTTP协议,等完成HTTP协议以后我们开始学习TCP/IP协议,废话不多说开始介绍吧。
通常我们使用的网络都是在TCP/IP上运行的,而HTTP协议是TCP/IP的内部子集,也就是他爸爸。计算机与网络设备要通信,双方就必须基于相同的方法,也就是说不同的设备,操作系统之间想要通讯,必须要有规则,这种规则就是协议。这个协议里面就是一个大杂烩,包括访问web页面的处理也就是我们HTTP协议等等一系列的东西。
三、TCP/IP分层
TCP/IP协议按照层次分为一下的4层:应用层,传输层,网络层和数据链路层。相信这些大家在大学的时候都有学过,然而我确实在梦境中度过。无奈为昨天错误进行买单吧。来说一下这个层次化就和简单三层是一样的好维护好更改,设计起来更方便简单。处于应用层应用只管考虑分派给自己的任务,而不需要去干传输数据的问题,这就是单一原则,好比说三成中的数据成,只管和数据库打交道,剩下的业务你就在业务层处理好丢给我就好了。各施其职,也就是重要的面向对象的设计原则。
应用层:决定向用户提供那些服务时的通讯活动。TCP/IP内部封装了各类应用服务,比如FTP和HTTP等等,说白一点就是封装这不同数据请求头的报文。
传输层:提供在网络连接中的数据传输。在传输层我们最熟悉的TCP和UDP协议。
网络层:用来处理在网络上流动的数据包,数据包是最小的数据单位。该层决定了通过怎样的路径到达对放的电脑,,并把数据传输给对方。
链路层:来处理连接网络的硬件部分,包括操作系统,硬件设备等等。
四、TCP/IP通讯传输流
这个是按照HTTP请求的一个例子,相信大家基本上能看懂,所以不做过多的文字介绍,只是这让我想起了在500强里面的师傅,那时他就老是给我讲这个服务器客户端的事,只能说浩哥谢谢你,大恩不言谢,就是你我的编程世界开始的。好不煽情了,继续说说这个里面需要知道事吧,发送端在每次经过一个层的时候都会被打上该层的标签,在服务器端,层与层之间传输的时候会去掉,这就是封装的应用。
五、HTTP协议传输中所用的到协议了解
IP网际协议位于网络层,所有的网络层都会用到IP协议,IP协议的作用就是把各种数据包传输给对方,在这个传输中需要两个重要的条件就是IP地址和MAC地址,这个基本意思就是我要知道我要传输给谁,IP地址和MAC地址进行匹配就是准确定位到访问的地址,在木有到达对方的的过程中,需要路由的选择,这个就像你在淘宝上买书,店家先让快递员送到集散中心,然后集散中心判断送货地址,看看能不能送到,不能继续前往下一个集散中心,最终讲书送到你手上,这个例子用说明在网络的传输中我们是无法掌握到互联网的细节的。
TCP协议按照分层属于传输层,提供可靠的字节流服务。为了准确无误的将数据传输给目标文件,TCP协议采用了三次握手办法。TCP协议将数据包传输出去以后不会不管,而是要先发送带SYN(synchronize)标志的数据包给对方,接收端收到后,回传一个带有SYN/ACK标志的数据包以表示确认收到信息,最后发送端回传一个带有ACK标志的数据包结束,代表握手结束,在我握手的某个阶段中断,TCP协议再次以相同的顺序发送相同的数据包。
DNS协议与HTTP协议一样位于应用层协议,他提供IP地址之间的解析服务,一般我们访问baidu.com的时候,DNS先回帮我们把百度的IP地址解析回来然后再进行对该服务器的访问。
最后上一幅图将各种协议与HTTP协议的关系展示一下。
祝大家新年快乐,早日找到心仪的对象。哈哈!!!!!!