前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >计算机网络记忆点

计算机网络记忆点

作者头像
meihuasheng
发布2021-03-18 11:05:23
2350
发布2021-03-18 11:05:23
举报
文章被收录于专栏:phpcodersphpcoders

声明:转载还得加上链接麻烦,这只是整理自己要的东西,忘记了回头看看,顺便让大家了解了解,如果有什么侵权,请联系我,我会删除,谢谢理解

1.网络层次划分

TCP/IP从下往上:物理层、数据链路层、网络层、传输层、应用层

OSI七层网络模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

物理层

这一层为上层协议提供一个传输数据的可靠物理媒体,简单的说,物理层确保原始的数据可在各种物理媒体上传输。

重要设备:中继器和集线器

数据链路层

数据块称为帧,帧是数据链路层的传送单位。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发。

数据链路层为网络层提供可靠的数据传输,主要协议是:以太网协议。

重要设备:网桥和交换机。

网络层

网络层负责对子网间的数据包进行路由选择,可以实现拥塞控制和网际互连功能。

基本数据单位为IP数据报。包含的协议有:IP协议、ICMP协议、ARP协议

重要设备:路由器。

传输层

将上层数据分段并提供端到端的、可靠的或不可靠的传输。

包含的协议有:TCP协议(面向连接的、可靠的、基于字节流的传输层通信协议,确认机制、超时重传机)、UDP协议(提供简单的非连接传输层服务、面向报文)

重要设备:网关

应用层

数据传输的基本单位为报文。就是访问网络服务的接口。

主要协议:FTP文件传送协议、Telnet远程登录协议、SMTP邮件传送。。。

2.TCP/IP协议

网络层的IP协议,传输层的TCP协议。TCP负责发现传输问题,确保数据安全正确传输到目的地。IP是给每一个设备规定一个地址。

TCP三次握手和四次挥手

TCP连接建立过程:首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。

TCP连接断开过程:假设Client端发起中断连接请求,也就是发送FIN报文。Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据。所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息"。这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文。当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。“,Server端收到ACK后,"就知道可以断开连接了"。Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!

为什么要三次挥手?

在只有两次“握手”的情形下,假设Client想跟Server建立连接,但是却因为中途连接请求的数据报丢失了,故Client端不得不重新发送一遍;这个时候Server端仅收到一个连接请求,因此可以正常的建立连接。但是,有时候Client端重新发送请求不是因为数据报丢失了,而是有可能数据传输过程因为网络并发量很大在某结点被阻塞了,这种情形下Server端将先后收到2次请求,并持续等待两个Client请求向他发送数据...问题就在这里,Cient端实际上只有一次请求,而Server端却有2个响应,极端的情况可能由于Client端多次重新发送请求数据而导致Server端最后建立了N多个响应在等待,因而造成极大的资源浪费!所以,“三次握手”很有必要!

为什么要四次挥手?

试想一下,假如现在你是客户端你想断开跟Server的所有连接该怎么做?第一步,你自己先停止向Server端发送数据,并等待Server的回复。但事情还没有完,虽然你自身不往Server发送数据了,但是因为你们之前已经建立好平等的连接了,所以此时他也有主动权向你发送数据;故Server端还得终止主动向你发送数据,并等待你的确认。其实,说白了就是保证双方的一个合约的完整执行!

3.UDP协议

udp是用户数据报协议,面向无连接的通讯协议。属于不可靠连接。

TCP UDP 的区别:TCP是面向连接的,可靠的字节流服务;UDP是面向无连接的,不可靠的数据报服务。

4.HTTP协议

https详解:看了很明白 插眼

https://blog.csdn.net/guolin_blog/article/details/104546558?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159369977419724843327676%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=159369977419724843327676&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-2-104546558.first_rank_ecpm_v3_pc_rank_v4&utm_term=https

http2和http1的区别对比

相比 HTTP/1.x,HTTP/2 在底层传输做了很大的改动和优化: - HTTP/2 采用二进制格式传输数据,而非 HTTP/1.x 的文本格式。二进制格式在协议的解析和优化扩展上带来更多的优势和可能。 - HTTP/2 对消息头采用 HPACK 进行压缩传输,能够节省消息头占用的网络的流量。而 HTTP/1.x 每次请求,都会携带大量冗余头信息,浪费了很多带宽资源。头压缩能够很好的解决该问题。 - 多路复用,直白的说就是所有的请求都是通过一个 TCP 连接并发完成。HTTP/1.x 虽然通过 pipeline 也能并发请求,但是多个请求之间的响应会被阻塞的,所以 pipeline 至今也没有被普及应用,而 HTTP/2 做到了真正的并发请求。同时,流还支持优先级和流量控制。 - Server Push:服务端能够更快的把资源推送给客户端。例如服务端可以主动把 JS 和 CSS 文件推送给客户端,而不需要客户端解析 HTML 再发送这些请求。当客户端需要的时候,它已经在客户端了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.网络层次划分
    • 物理层
      • 数据链路层
        • 网络层
          • 传输层
            • 应用层
            • 2.TCP/IP协议
            • 3.UDP协议
            • 4.HTTP协议
              • https详解:看了很明白 插眼
                • http2和http1的区别对比
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档