计算机网络基本知识点

一、网络

通过通信线路将设备连接起来,实现资源共享和信息传递虚拟平台

二、IP地址

IP:唯一标识一台设备的地址

windows: ipconfig  linux:ifconfig

三、端口、端口号

端口:对应程序,数据的通道,发送数据

端口号:不同的数据通道,标识一个程序 0-65535

四、TCP

传输协议(普通话)

面向连接、可靠传输

先建立连接,发送数据,关闭连接

三次握手

1)  客户端发送SYN+初始号给服务端(1开启、0关闭)

(上班第一天,你第一次见老板,告诉自己的名字信息之类的)

2)服务端回复SYN+ACK (确认号 = 序号+1)

(老板了解了你的信息,确认你这个人)

3)  客户端确认ACK

(你签合同确认入职,同意)

SYN:同步

四次挥手(客户端或服务端都可以发起)

1)客户端发送FIN+ACK,表示不在发送数据,但可以接受数据

(下班前,你告诉老板工作做完了,但你不能直接走,老板可能还有事给你,你还得接收)

2)  服务端发送ACK,可能还会发送

(老板确认你完成工作,但不一定立刻让你走,还可能给你布置额外任务)

3)  服务端发送ACK+FIN,同意关闭

(直到老板决定你可以下班了,发送FIN同意你才能回家)

4)  客户端发送ACK 确认

(礼貌“问候”老板say bye)

1. 为什么协议是三次握手,而关闭连接是四次挥手?

建立连接时,ACK和SYN放在一个报文里;关闭连接时服务器可能还要再发送一些数据后,再发送FIN报文表示同意关闭,所以ACK报文和FIN报文大多数是分开发送的

2. 为什么TIME_WAIT还要等待2MSL才能返回closed状态

1. 无法保证最后一次发送的ACK报文一定会被对方收到

2. 关闭连接后可能会出现相同的IP地址和端口建立新的连接,为了放置旧连接重复分组。2MSL足够让分组最多存活MSL秒被丢弃。

MSL是Maximum Segment Lifetime的英文缩写,可译为“最长报文段寿命”)

3. 为什么必须是三次握手,不能用两次握手

容易死锁。

为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的。 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤;如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认。

4. TCP、UDP

都在传输层,TCP面向连接的是安全的,UDP不是(视频)

1)TCP面向连接;UDP是无连接的,发送数据前不需要建立连接

2)TCP提供可靠服务,数据无差错、不丢失、重复;UDP不保证可靠性

3)TCP面向字节流;UDP面向报文

4)TCP逻辑通信信道是全双工可靠信道;UDP是不可靠信道

5. TCP常见的控制算法

1)流量控制

TCP协议通过滑动窗口来进行流量控制,它是控制发送方的发送速度从而使接受者来得及接收并处理。而拥塞控制是作用于网络,它是防止过多的包被发送到网络中,避免出现网络负载过大,网络拥塞的情况。

2)拥塞控制

为了降低网络拥塞程度

拥塞控制主要是四个算法:1)慢启动,2)拥塞避免,3)拥塞发生,4)快速恢复。

6. TCP如何保证可靠性

1)序列号

2)超时重传

3)连接管理(三次握手、四次挥手)

4)流量控制(TCP根据接收端数据的处理能力,决定发送端的发送速度)

5)拥塞控制

7. UDP如何保证可靠

不属于连接型协议,资源消耗小,处理速度快的优点

音频、视频和普通数据在UDP传送时使用较多

1)提供超时重传

2)提供确认序列号,对数据包进行确认和排序

8. TCP的keep-alive和HTTP的keep-alive

HTTP的keep-alive:tcp活的久一点,以便传送多个http请求

TCP的keep-alive:检测TCP连接状况的保鲜机制

9. TCP报文头部结构

11.TCP半连接发生的场景

收到ACK之间的TCP连接

六、TCP应用程序开发流程

客户端:软件

服务器端:处理数据

模型:

1)CS:客户端和服务器

2)BS:浏览器和服务器

应用程序开发流程:

七、HTTP协议

1. 超文本传输协议,协议格式基于TCP传输协议

2. 规定浏览器和web服务器通信数据的格式

1. 访问网页后发生了什么?

客户端输入域名,根据DNS域名解析出ip地址返回给客户端(域名解析),发起TCP三次握手建立http请求,客户端根据真实IP请求服务器,服务器中获得对应的资源(图片、js、css),返回这些给浏览器,浏览器对资源进行渲染,显示。

web默认服务器程序端口号为80

2. url地址

统一资源定位符,网址

https://123.com/34/e3

1. https  协议

2.123.com 域名

3. /32/2es  资源路径

以?开始key = value   查询参数,如(?wd=python)有多个参数用&隔开

3. HTTP请求报文和响应报文

GET:获取数据(请求行、请求头、空行)

POST:提交数据(请求行、请求头、空行、请求体(表单数据))

host服务器的主机地址端口号

响应报文:响应行、响应头、响应体(在response里)

4. HTTP与HTTPS有什么区别

1. HTTPS协议需要申请证书,HTTP不需要

2. HTTP超文本协议,属于应用层;HTTPS具有SSL加密安全性传输协议

3. 不同的连接方式,端口也不一样,HTTP(80)HTTPS(443)

4. HTTP连接很简单是无状态的,HTTPS由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议(零信任)

非对称加密(公钥、私钥)和对称加密

五、Socket(套接字)

IP+Socket进程之间网络数据的传输通过socket来完成

例:我的微信和你的微信聊天

传输数据流程:

1. 先将数据按照TCP协议数据格式(通过socket传输)

2. 根据对方的IP地址找到对方的电脑

3. 通过端口号找到端口

六、RPC、Restful区别和优点

1. RPC:远程过程调用协议,通过网络从远程计算机程序上请求服务(TCP、UDP)

2. Restful:

七、OSI七层协议

1. 物理层

硬件之间的通信问题:传输比特流

2. 数据链路层

接收来自物理层的位流形式的数据,并封装成帧,传送到上一层

3. 网络层

通过路由选择算法,为报文(该层的数据单位,由上一层数据打包而来)通过通信子网选择最适当的路径。这一层定义的是IP地址,通过IP地址寻址,所以产生了IP协议。

4. 传输层

监控数据传输服务的质量,保证报文的正确传输。

5. 会话层

它的作用就是建立和管理应用程序之间的通信。

6. 表示层

负责数据格式的转换,将应用处理的信息转换为适合网络传输的格式

7. 应用层

直接向用户提供服务

八、中间件

中间件:系统软件和用户应用软件之间连接的软件,以便于软件各部件之间的沟通

中间件是一类能够为一种或多种应用程序合作互通,资源共享,同时还能够为该应用程序提供相关的服务的软件。中间件是一类软件统称,而非一种软件,中间件不仅仅实现互联,还要实现应用之间的互操作。

 Nginx: Nginx是一个开源且高性能、可靠的HTTP中间件、代理服务。其特点是占有内存少,并发能力强。

猜你喜欢

转载自blog.csdn.net/Kiraxqc/article/details/125971153
今日推荐