计算机网络编程基础知识

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

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

一、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 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

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

1、三次握手建立连接;四次挥手断开连接

https://thinkwon.blog.csdn.net/article/details/104903925

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

localhost1212

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值