(2)计算机基础知识

本文详细介绍了计算机网络的基础知识,包括GET和POST请求的区别,HTTP与HTTPS的联系与差异,TCP的三次握手和四次挥手过程,以及UDP与TCP的主要区别。此外,还解释了URL的组成部分。这些概念是理解网络通信和数据传输的基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

计算机基础知识

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



一、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

总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值