1、计算机网络概述
计算机网络是指将多台计算机通过通信设备互连起来,以实现数据和资源的共享、信息传递和协同工作的系统。它是现代信息技术的基础,广泛应用于个人、家庭、企业和全球范围内的通信和数据传输。它的主要目的是实现数据的传输和共享。通过计算机网络,用户可以在不同地点之间传输文件、发送电子邮件、浏览网页、进行在线交流等。网络可以将多个计算机连接起来,使得用户可以共享文件、打印机、数据库等资源,提高工作效率和协作能力。计算机网络的基本组成包括硬件设备、软件程序和协议。硬件设备包括计算机、服务器、路由器、交换机等,用于连接和传输数据。软件程序包括操作系统、网络协议、应用程序等,用于管理和控制网络通信。协议是网络通信所遵循的规则和标准,例如TCP/IP协议。计算机网络按照规模可以分为局域网(LAN)、城域网(MAN)和广域网(WAN)。局域网通常用于办公室、学校或家庭内部,城域网覆盖城市范围,广域网则可以连接不同地区或国家的网络。
2、计算机网络协议
2.1 OSI七层协议
包括:物理层,数据链路层,网络层,传输层(运输层),会话层,表示层,应用层
2.2 ## TCP/IP五层协议
包括:物理层,数据链路层,网络层,运输层,应用层
3、物理层的作用
主要解决两台物理机之间的通信,通过二进制比特流的传输来实现,二进制数据表现为电流电压上的强弱,到达目的地在转化为二进制机器码。网卡、集线器工作在这一层。
4、 数据链路层的作用
在不可靠的物理介质上提供可靠的传输,接收来自物理层的位流形式(即010101)的数据,并封装成帧,传送到上一层();同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层。这一层在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路。提供物理地址寻址功能。交换机工作在这一层。
5、网络层的作用
将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方,通过路由选择算法为分组通过通信子网选择最佳路径。路由器工作在这一层。
6、传输层的作用
传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信(逻辑信道关注的是传输的内容和类别。信息首先被分为两种类型:控制消息(控制面的信令,如广播类消息,寻呼类消息)和业务消息(业务平面的消息,承载着高层传来的实际数据)。因此逻辑信道又可以分为两类,控制逻辑信道和业务逻辑信道。)信道。
7、会话层的作用
建立会话:身份验证,权限鉴定等;保持会话:对该会话进行维护,在会话维持期间两者可以随时使用这条会话传输;断开会话:当应用程序或应用层规定的超时时间到期后,OSI会话层才会释放这条会话。
8、应用层的作用
提供应用层协议,如HTTP协议,FTP协议等等,方便应用程序之间进行通信。
9、TCP三次握手过程
- 第一次握手:客户端将标志位SYN置为1,随机产生一个值序列号seq=x,并将该数据包发送给服务端,客户端 进入syn_sent状态,等待服务端确认。
- 第二次握手:服务端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务端将标志位SYN和 ACK都置为1,ack=x+1,随机产生一个值seq=y,并将该数据包发送给客户端以确认连接请求,服务端进入syn_rcvd状态。
- 第三次握手:客户端收到确认后检查,如果正确则将标志位ACK为1,ack=y+1,并将该数据包发送给服务端,服务端进行检查如果正确则连接建立成功,客户端和服务端进入established状态,完成三次握手,随后客户端和服务端之间可以开始传输 数据了
9、为什么TCP握手需要三次?
TCP进行可靠传输的关键就在于维护一个序列号,三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值。
10、TCP四次挥手过程
- 第一次挥手:客户端发送一个FIN,用来关闭客户端到服务端的数据传送,客户端进入fin_wait_1状态。
- 第二次挥手:服务端收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1,服务端进入Close_wait状态。此时TCP连接处于半关闭状态,即客户端已经没有要发送的数据了,但服务端若发送数据,则客户端仍要接收。
- 第三次挥手:服务端发送一个FIN,用来关闭服务端到客户端的数据传送,服务端进入Last_ack状态。
- 第四次挥手:客户端收到FIN后,客户端进入Time_wait状态,接着发送一个ACK给服务端,确认后,服务端进入Closed状态,完成四次挥手。
11、为什么TCP挥手需要4次
主要原因是当服务端收到客户端的 FIN 数据包后,服务端可能还有数据没发完,不会立即close。所以服务端会先将 ACK 发过去告诉客户端我收到你的断开请求了,但请再给我一点时间,这段时间用来发送剩下的数据报文,发完之后再将 FIN 包发给客户端表示现在可以断了。之后客户端需要收到 FIN 包后发送 ACK 确认断开信息给服务端。