【计算机网络】网络知识杂记

浏览器输入网址之后发生了什么
  1. DNS域名解析(DNS服务器保存了Web服务器域名和IP的对应关系)
  2. HTTP协议生成请求报文
  3. TCP协议将请求报文分割成报文段,进行可靠传输
  4. IP协议进行分组转发
  5. TCP协议重组请求报文
  6. HTTP协议对请求进行处理
网络体系(OSI七层、TCP/IP四层、五层)

在这里插入图片描述

IP协议
IPV4

在这里插入图片描述

IPv4 地址长度共 32 位,是以每 8 位作为一组,并用点分十进制的表示方式

IPV6

在这里插入图片描述

IPv6 地址长度是 128 位,是以每 16 位作为一组,每组用冒号 「:」 隔开

IPV6 相对于 IPV4 首部的改进:

  • 取消了首部校验和字段。 因为在数据链路层和传输层都会校验,因此 IPv6 直接取消了 IP 的校
    验。
  • 取消了分片/重新组装相关字段。 分片与重组是耗时的过程,IPv6 不允许在中间路由器进行分片与
    重组,这种操作只能在源与目标主机,这将大大提高了路由器转发的速度。
  • 取消选项字段。 选项字段不再是标准 IP 首部的一部分了,但它并没有消失,而是可能出现在
    IPv6 首部中的「下一个首部」指出的位置上。删除该选项字段使的 IPv6 的首部成为固定长度的
    40 字节。
TCP协议

在这里插入图片描述

TCP头部信息

TCP头部信息出现在每个TCP报文段中, 用于指定通信的游端端口号、目的端端口号, 管理TCP连接, 控制两个方向的数据流。

在这里插入图片描述

序列号(Sequence Number)

在建立连接时由计算机生成的随机数作为其初始值,通过 SYN 包传给接收端主机,每发送一
次数据,就「累加」一次该「数据字节数」的大小。用来解决网络包乱序问题

确认应答号(Acknowledgement Number)

指下一次「期望」收到的数据的序列号,发送端收到这个确认应答以后可以认为在这个序
号以前的数据都已经被正常接收。用来解决不丢包的问题

控制位

  • ACK:该位为 1 时,「确认应答」的字段变为有效,TCP 规定除了最初建立连接时的 SYN
    包之外该位必须设置为 1 。
  • RST:该位为 1 时,表示 TCP 连接中出现异常必须强制断开连接。
  • SYN:该位为 1 时,表示希望建立连接,并在其「序列号」的字段进行序列号初始值的设定。
  • FIN:该位为 1 时,表示今后不会再有数据发送,希望断开连接。当通信结束希望断开连接时,
    通信双方的主机之间就可以相互交换 FIN 位为 1 的 TCP 段。

TCP三次握手四次挥手

TCP三次握手

在这里插入图片描述

刚开始,服务端和客户端都是出于 CLOSED 状态。先是服务端主动监听某个窗口,出于 LISTEN 状态。

第一次握手:

客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里,之后客户端处于 SYN_SEND状态。

第二次握手 :

服务器发回确认包 (ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即X+1。之后服务端处于 SYN_RECV状态。

第三次握手:

客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1。

最后把报文发送给服务端,这次报文可以携带客户到服务器的数据,之后客户端处于 ESTABLISHED 状态。服务器收到客户端的应答报文后,也进入 ESTABLISHED 状态。

即 S Y N 就 是 询 问 : 你 能 听 得 到 吗 ? A C K 就 是 回 到 : 我 能 听 得 到 啊 。 \textcolor{red}{即SYN就是询问: 你能听得到吗? ACK就是回到: 我能听得到啊。} SYNACK

为什么是三次握手

  • 三次握手才能阻止重复历史连接的初始化(主要原因)

  • 三次连接才可以同步双方的初始序列号

  • 三次握手可以避免资源浪费

为什么不是两次或者四次握手

两次握手,无法阻止历史连接的建立,会造成双方资源的浪费,也无法可靠的同步双方序列号。

四次握手:三次握手已经理论上最少可靠连接建立,所以不需要使用更多的通信次数。

如果两次,那么B无法确定B的信息A是否能收到,所以如果B先说话,可能后面的A都收不到,会出现问题 。

如果四次,那么就造成了浪费,因为在三次结束之后,就已经可以保证A可以给B发信息,A可以收到B的信息; B可以给A发信息,B可以收到A的信息

TCP四次挥手

在这里插入图片描述

四次挥手

在这里插入图片描述

A:“喂,我不说了 (FIN)。”A->FIN_WAIT1

B:“我知道了**(ACK)**。等下,上一句还没说完。Balabala……(传输数据)”B- >CLOSE_WAIT | A->FIN_WAIT2

B:”好了,说完了,我也不说了(FIN)。”B->LAST_ACK

A:”我知道了(ACK)。”A->TIME_WAIT | B->CLOSED

A等待2MSL,保证B收到了消息,否则重说一次”我知道了”,A->CLOSED

这样,通过四次挥手,可以把该说的话都说完,并且A和B都知道自己没话说了,对方也没花说了,然后就挂掉电话(断开链接)了 。

TCP和UDP区别

HTTP/3 把 HTTP 下层的 TCP 协议改成了 UDP!

TCP常用于 FTP 文件传输,HTTP/HTTPS,UDP常用于总包较少的通信,如 DNS、SNMP等。

  • 连接:UDP是无连接的,发送数据之前无需建立连接,发送数据结束后也无需释放连接。TCP是面向连接的,在发送数据之前需要通过三次握手建立连接,发送数据结束后需要通过四次挥手释放连接。

  • 可靠性:TCP 是可靠交付数据的,数据可以无差错、不丢失、不重复、按需到达。UDP 是尽最大努力交付,不保证可靠交付数据。

  • 传输方式。TCP 是流式传输,没有边界,但保证顺序和可靠。UDP 是一个包一个包的发送,是有边界的,但可能会丢包和乱序。

  • 通信双方:UDP支持一对一、一对多、多对一、多对多的交互通信。TCP连接是点对点(一对一),每一条TCP连接只能有两个端点。

  • 拥塞控制、流量控制。TCP 有拥塞控制和流量控制机制,保证数据传输的安全性。UDP 则没有,即使网络非常拥堵了,也不会影响 UDP 的发送速率。

  • 首部开销:UDP首开销小,只有8个字节。TCP首部是20个字节。

TCP可靠性连接的实现

序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输的

  • 针对数据包丢失情形,使用重传机制解决

  • 针对数据包往返时间长,通信效率就会变低,使用滑动窗口解决

  • 发送方不能无脑的发送数据给接收方,要考虑接收方的处理能力。为了避免接收方处理不过来,TCP提供流量控制机制解决。

  • 拥塞控制,目的是为了避免发送方的数据填满整个网络。

在这里插入图片描述

HTTP协议

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

客户端请求消息

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。

服务器响应消息

HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

HTTP状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
下面是常见的HTTP状态码:

200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
404 - 请求的资源(网页等)不存在
500 - 内部服务器错误

HTTP和HTTPS的区别
  • 默认端口 :HTTP的URL由“http://”起始且默认使用端口80,而HTTPS的UR由“https://”起始且默认使用端口443。

  • 安全性和资源消耗: HTTP协议运行在TCP之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS是运行在SSL/TLS之上的HTTP协议,SSL/TLS 运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。所以说,HTTP 安全性没有 HTTPS高,但是 HTTPS 比HTTP耗费更多服务器资源。

    • 对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES等。
    • 非对称加密:密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。
  • HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。

  • HTTPS需要向CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。

在这里插入图片描述

证书验证,客户端发送一个证书请求个服务器端,服务器端返回证书,客户端对证书进行验证。

交换密钥,使用非对称加密,客户端使用公钥进行加密,服务器端使用密钥解密。

交换数据,使用对称加密的方式对数据进行加密,然后进行传输

HTTP协议中GET和POST方式的区别

Get:请求从服务器获取资源,这个资源可以是静态的文本、页面、图片视频等。

POST:相反操作,向URL指定的资源提交数据,数据就放在报文的 body 中。

参数位置、参数长度、参数编码、TCP数据包

  • 参数位置:GET方法参数位置包含在URL,POST方法参数包含在请求主体

  • 参数长度:GET方法的URL长度有限度,POST长度没有限制

  • 参数编码:GET方法参数编码是ASCII码,POST没有限制

  • TCP数据包:GET方法产生一个TCP数据包,把首部和数据一起发送,POST方法产生两个TCP数据包,先发首部,服务器响应后再发数据

参考

  • 图解网络,小林coding-v2.0
  • Linux 高性能服务器编程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值