美文网首页
HTTP从入门到懵逼学习笔记(一)

HTTP从入门到懵逼学习笔记(一)

作者: 狗没拿伞 | 来源:发表于2018-01-15 00:00 被阅读0次

     虽然说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》+无所不知的度娘+各位大佬的博客

    相关文章

      网友评论

          本文标题:HTTP从入门到懵逼学习笔记(一)

          本文链接:https://www.haomeiwen.com/subject/aieloxtx.html