虽然说web也学了很久了,也尝试写过一些小项目,但是越往后面学我就感觉自己的基础真的很差,很多东西都只停留在只会用的阶段,对于其中的道理是完全懵逼的,趁着这个寒假,好好的补一补以前的基础课程。我就先从复习HTTP开始,哦,不,应该说是从零开始。
TCP/IP协议族
首先,我们都知道web是建立在HTTP上进行通信的,至于HTTP的历史来源就不聊了,百度一下很容易就知道了的。在学习HTTP之前必须要先了解一下TCP/IP协议族,毕竟HTTP就是它的一个子集。TCP/IP协议族有个分层的概念,如下:应用层、传输层、网络层和数据链路层。如果互联网只由一个协议统筹时,某个地方需要改变时就得换整体,分层的话就只需替换变动的层就行了,而且分层将设计变得更简单。
一、链路层
用来处理网络的硬件部分。
二、网络层
该层规定了通过怎样的路径到达对方的计算机,并将数据包传送给对方。
三、传输层
提供了处于网络连接的两台计算机之间的数据传输。在传输层两个性质不同的协议,TCP和UDP。
四、应用层
应用层决定了向用户提供应用服务时通信的活动。这句话有点难以理解,我在网上看到一篇博客是这样说的,我觉得说得十分好。
通过上面的几层协议,我们已经可以在任意两个人(进程)之间进行通信。然而每个人实际上从事的是不同的行业。有的人是律师,有的人外交官。比如说律师之间的通信,会用严格的律师术语,以免产生纠纷。再比如外交官之间的通信,必须符合一定的外交格式,以免发生外交误会。再比如间谍通过暗号来传递加密信息。应用层协议是对信件内容进一步的用语规范。应用层的协议包括用于Web浏览的HTTP协议,用于传输文件的FTP协议,用于Email的IMAP等等。
TCP/IP通信传输流
image.png发送端在层与层之间传输数据时,每经过一层时必会被打上一个该层所属的首部信息。反之,接受层在层与层之间传输数据时,每经过一层时会吧对应的首部消去。将数据信息包装起来的做法称为封装。
IP、TCP、DNS
一、IP
IP协议位于网络层,作用是将各种数据包传送给对方。在非局域网的网络中,通常是经过多台计算机和网络设备中转才能连接对方的。会利用下一站中转设备的MAC地址来搜索下一个中转目标,这时就需要ARP协议来将IP反查出对应的MAC地址。如下图
《图解HTTP》.png
二、TCP
TCP位于传输层,提供可靠的字节流传输服务。TCP协议为了更容易传输大数据将数据分割,而且TCP能确认数据最终是否送达到对方。为了准确将数据送达目标处,建立TCP需要三次握手才能建立,而断开需要四次挥手。具体的话这篇博客我觉得讲得挺好的https://www.cnblogs.com/myvin/p/4862167.html
如果还不好理解,我在知乎上看到一个非常有趣的形容。
怎样生动描述 TCP 的「三次握手」? - 吴毅凡的回答 - 知乎
https://www.zhihu.com/question/20879359/answer/88768186
三、DNS
DNS是一个位于应用层的协议,提供域名到IP之间的解析服务。这个很好理解,就是IP地址一串数字不好记忆,可以通过访问对应的域名,然后通过DNS来将域名转为IP来访问相应的服务器。
附一个各种协议与HTTP协议的关系图
《图解HTTP》.png
URI和URL
以前的我,一直对着两个东西傻傻分不清楚,URL倒是经常用,URI到底是什么呢?URI(Uniform Resource Identifier)-统一资源标识符;URL(Uniform Resource Locator)-统一资源定位符。URI用字符串标识某一互联网资源,而URL表示资源的地点,URL是URI的子集。如下全是URI:
ftp://ftp.is.co.za/rfc/rfc1808.txt (also a URL because of the protocol)
http://www.ietf.org/rfc/rfc2396.txt (also a URL because of the protocol)
ldap://[2001:db8::7]/c=GB?objectClass?one (also a URL because of the protocol)
mailto:John.Doe@example.com (also a URL because of the protocol) news:comp.infosystems.www.servers.unix (also a URL because of the protocol)
tel:+1-816-555-1212
telnet://192.0.2.16:80/ (also a URL because of the protocol)
urn:oasis:names:specification:docbook:dtd:xml:4.1.2
由例子可以看出,提供的具体网络地址的可以称为URL。
参考博客URI与URL的区别:https://www.cnblogs.com/hust-ghtao/p/4724885.html
今天学习内容如上。\( ̄︶ ̄)/
参考资料:《图解HTTP》+无所不知的度娘+各位大佬的博客
网友评论