IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> (2)计算机基础知识 -> 正文阅读

[网络协议](2)计算机基础知识

计算机基础知识

本节包含了计算机网络等相关知识



一、get与post请求

  • TCP就像汽车,我们用TCP来运输数据,它很可靠,从来不会发生丢件少件的现象。但是如果路上跑的全是看起来一模一样的汽车,那这个世界看起来是一团混乱,送急件的汽车可能被前面满载货物的汽车拦堵在路上,整个交通系统一定会瘫痪。为了避免这种情况发生,交通规则HTTP诞生了。HTTP给汽车运输设定了好几个服务类别,有GET, POST, PUT, DELETE等等,HTTP规定,当执行GET请求的时候,要给汽车贴上GET的标签(设置method为GET),而且要求把传送的数据放在车顶上(url中)以方便记录。如果是POST请求,就要在车上贴上POST的标签,并把货物放在车厢里。当然,你也可以在GET的时候往车厢内偷偷藏点货物,但是这是很不光彩;也可以在POST的时候在车顶上也放一些数据,让人觉得傻乎乎的。HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本。
  • 当然还有另一个重要的角色:运输公司。不同的浏览器(发起http请求)和服务器(接受http请求)就是不同的运输公司。虽然理论上,你可以在车顶上无限的堆货物(url中无限加参数)。但是运输公司可不傻,装货和卸货也是有很大成本的,他们会限制单次运输量来控制风险,数据量太大对浏览器和服务器都是很大负担。业界不成文的规定是,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。超过的部分,恕不处理。如果你用GET服务,在request body偷偷藏了数据,不同服务器的处理方式也是不同的,有些服务器会帮你卸货,读出数据,有些服务器直接忽略,所以,虽然GET可以带request body,也不能保证一定能被接收到哦。
  • GET和POST还有一个重大区别,简单的说:GET产生一个TCP数据包;POST产生两个TCP数据包。长的说,对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
    也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。

二、HTTP与HTTPS

上面提到了http,那么在这部分浅谈一下http与https区别,

  • 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。http是超文本传输协议,信息是明文传输, https则具安全性的ssl/tls加密传输协议。
    (1)Http和Https使用完全不同的连接方法和不同的端口。前者是80,后者是443。Http连接是非常简单和无状态的;Https协议是由SSL/TLS+HTTP协议构建的网络协议,可用于加密传输和身份认证。它比HTTP协议更安全。
    (2)Http使用TCP三次握手建立连接,客户端和服务器需要交换3个包;Https除了TCP的三个包,还要加上ssl握手需要的9个包,所以一共是12个包。

三、TCP

  • TCP是一种面向连接的传输层控制协议,可靠的,基于字节流的传输协议。和UDP最大的区别是需要连接的,三次握手、四次挥手

  • TCP的三次握手
    在这里插入图片描述

  • 第一次握手:建立连接。客户端发送syn包到服务器,并进入Syn_sent状态,等待服务器确认;

  • 第二次握手:服务器收到syn包,必须确认客户端的Syn(ack=j+1),同时自己也发送一个Syn包(seq=k),即SYN+ACK包,此时服务器进入SYN_Recv状态。

  • 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入Established(TCP连接成功)状态,完成三次握手

四、为什么要进行三次握手,而不是两次呢?

  • 主要是为了防止已经失效的连接请求报文突然又传送到了服务器,从而导致不必要的错误和资源的浪费。
    如果使用的是两次握手建立连接,假设有这样一种场景,客户端发送的第一个请求连接并且没有丢失,只是因为在网络中滞留的时间太长了,由于TCP的客户端迟迟没有收到确认报文,以为服务器没有收到,此时重新向服务器发送这条报文,此后客户端和服务器经过两次握手完成连接,传输数据,然后关闭连接。此时之前滞留的那一次请求连接,因为网络通畅了, 到达了服务器,这个报文本该是失效的,但是,两次握手的机制将会让客户端和服务器再次建立连接,这将导致不必要的错误和资源的浪费。
    如果采用的是三次握手,就算是那一次失效的报文传送过来了,服务端接受到了那条失效报文并且回复了确认报文,但是客户端不会再次发出确认。由于服务器收不到确认,就知道客户端并没有请求连接。

  • 只有经过第三次握手,才能确保双向都可以接收到对方的发送的数据。握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

五、四次挥手又是什么呢?

  • 1)A跟B说,我要停止聊天了,你(B)还在吗?准备中断聊天了(FIN)
    2)B收到A的消息,B回复A说:我在。(ACK)
    3)B再发一条消息给A说,A你可以停止了。(FIN)
    4)A收到B说可以停止发消息了,A回复B说:收到!(ACK)
  • A:B 啊,我不想玩了。
    B:哦,你不想玩了啊,我知道了。
    (这个时候,还只是 A 不想玩了,也即 A 不会再发送数据,但是 B 能不能在 ACK 的时候,直接关闭呢?当然不可以了,很有可能 A 是发完了最后的数据就准备不玩了,但是 B 还没做完自己的事情,还是可以发送数据的,所以称为半关闭的状态。这个时候 A 可以选择不再接收数据了,也可以选择最后再接收一段数据,等待 B 也主动关闭。)
    B:A 啊,好吧,我也不玩了,拜拜。
    A:好的,拜拜。
    这就是一个完整的关闭连接,在这个关闭的过程中,一共说了四句话,我们也称之为四次挥手。

六、UDP是什么,与TCP区别是什么?

  • TCP(Transmission Control Protocol,传输控制协议)是面向连接的、可靠的字节流服务,也就是说,在收发数据前,必须和对方建立可靠的连接。这一过程和打电话类似:先拨号振铃,等待对方接电话,说喂,再说自己是谁。
  • UDP (User Datagram Protocol,用户数据报协议),是一种非连接的传输层协议,提供面向事务的简单不可靠信息传送服务,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上,故也不安全
    在这里插入图片描述

七、url组成

  • 一个完整的URL的组成由于:通信协议(scheme)、主机(host)、端口号(port)、路径(path)、查询(query)、信息片段(fragment)组成。
    (1)scheme:通信协议,常用的协议http,ftp等。
    host:主机,服务器(计算机)域名系统(DNS),主机名或IP地址。
    (2)port: 端口号,整数,可选,省略时是默认端口,如http的默认端口是80。
    (3)path:路径,由零或多个‘/’隔开的字符串,一般用来表示主机上的一个目录或者文件地址。
    (4)query:查询, 可选,用于给动态网页传递参数,可有多个参数,用“&”号隔开,每个参数的名和值用“=”号隔开。如:name=zs。
    (5)fragmeng:信息片段,字符串,锚点。
  • 例如: https://www.baidu.com/?name=zs&&age=15#middle

总结

以上就是计算机网络基础知识。下一节准备看一下操作系统基础知识。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-18 17:59:21  更:2022-05-18 18:00:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 11:55:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计