本文作为网络编程基础的学习和复习笔记,将不断补充更新。

本文将列出参考博客及书籍,首先感谢各位前辈博主及作者。

一、OSI分层结构

参考

https://sunweiguo.github.io/2019/01/17/network/1.从下到上看五层模型/

https://sunweiguo.github.io/2019/01/17/network/2.从上到下看五层模型/

分层标准分为多种

有OSI的分层结构:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

TCP/IP分层结构:应用层(应用层、表示层、会话层)、传输层、网络层、数据链路层、物理层

由下到上分析五层结构:

1、物理层

    物理层即将电脑通过物理手段连接起来

2、链路层

    以太网协议定义数据包:标头和数据;

    网卡的MAC地址

    广播的发送形式

3、网络层

    用IP地址、子网掩码判断是否属于同一子网络

    IP数据包:标头和数据

    用ARP协议获取接收方的MAC地址

4、传输层

   建立端口到端口的连接

   UDP协议/TCP协议(安全的UDP协议)

5、应用层

    规定应用程序的数据结构

 

计算机网络编程基础知识

计算机网络编程基础知识

注:

DCHP协议:分配动态IP地址

DNS协议:由网址转为IP地址

二、http协议

参考

https://sunweiguo.github.io/2019/01/17/network/3.http的前世今生/

HTTP协议即超文本传送协议(Hypertext Transfer Protocol ), 是基于 TCP/IP 协议的应用层协议,是Web联网的基础。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。

1、持久连接和管道机制

  • 持久连接(以前的版本中,一个HTTP请求就创建一个TCP连接,请求返回之后就关闭TCP连接,然而建立一次TCP连接的过程是比较耗时的,效率会比较低,现在建立一个TCP连接后,后面的HTTP请求都可以复用这个TCP连接,即允许了在同一个连接里面发送多个请求,会提高效率)
  • pipeline(解决了同一个TCP连接中客户端可以发送多个HTTP请求,但是对于服务端来说,对于进来的请求要按照顺序进行内容的返回,如果前一个请求处理时间长,而后一个请求处理时间端,即便后面一个请求已经处理完毕了,也要等待前一个请求处理完毕返回他才可以返回结果,这种串行的方式比较慢)

2、分块传输编码

对于一些很耗时的动态操作来说,这意味着,服务器要等到所有操作完成,才能发送数据,显然这样的效率不高。更好的处理方法是,产生一块数据,就发送一块,采用"流模式"(stream)取代"缓存模式"(buffer)。

3、多工

HTTP/2 复用TCP连接,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应,这样就避免了"队头堵塞"。

举例来说,在一个TCP连接里面,服务器同时收到了A请求和B请求,于是先回应A请求,结果发现处理过程非常耗时,于是就发送A请求已经处理好的部分, 接着回应B请求,完成后,再发送A请求剩下的部分。

这样双向的、实时的通信,就叫做多工(Multiplexing)。

4、头信息压缩

5、服务器推送

三、TCP协议

参考

https://sunweiguo.github.io/2019/01/18/network/4.TCP协议入门/

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

保证数据传输的可靠性及完整性:数据包编号及出错重传、慢启动、滑动窗口

相关文章:

  • 2021-04-25
猜你喜欢
  • 2021-04-01
  • 2021-12-13
  • 2021-04-05
相关资源
相似解决方案