linux网络知识

发布于:2024-04-09 ⋅ 阅读:(140) ⋅ 点赞:(0)

七层模型

应用层       

为操作系统或者网络应用程序提供网络服务的接口

表示层       

解决不同系统之间的通信问题,负责数据格式的转换

会话层       

自动收发包,自动寻址,负责建立和断开连接

传输层

将上层数据分段并提供端到端的,可靠的,不可靠的传输,处理差错控制和流量控制        网关

网络层

实现两个端系统的数据透明传输,包括寻址和路由选择,连接的建立,保持和终止        路由器

数据链路层

经来自网络层的数据可靠地传输到相邻节点的网络层,封装成帧,透明传输,差错检测        网桥,交换机,网卡

物理层

解决各种在传输媒体上传输比特0和1的问题        光纤,中继器

协议

应用层

FTP协议:文件传输协议,提供网络之家共享文件的协

Telnet协议:23端口,非安全通信协议,用于远程登录到计算机系统或设备的网络协议,明文通                           过网络在主机之间传输数据

SSH协议:22端口,用于在网络上安全地进行远程访问和数据交换的协议,过加密的方式来保                            护通信的机密性和完整性

Smtp协议:25端口,2525(备用端口)456(加密端口)简单邮件传输协议,向用户提供高效的邮件传输协议

DNS协议:域名解析系统,把URL解析为IP地址

Http协议:超文本传输协议

网络层

IP协议:负责将数据包从源主机发送到目标主机,通过ip地址作为为一标识,面向非连接

APR协议:根据ip地址获取物理地址协议的一个TCP/IP协议

RAPR协议:将局域网中某个主机的物理地址转化为IP地址

ICMP协议:支持路由器或主机进行差错报告和网络探寻,向源主机报告IP数据报和数据的差错

                 信息,只能报告,不能纠正

传输层

TCP/IP协议:TCP负责传输数据并且发现问题,一有问题发信号要求重新传输,IP是给每一个

                设备一个地址

TCP协议:邮件传输,远程登陆,文件传输。ssh协议,http协议f,tp协议,telent协议    

UDP协议:视频通话,在线游戏。dns协议,dhcp协议,snmp协议

UDP TCP
连接 无连接 面向连接
速度 无需建立连接,速度较快 需要建立连接,速度较慢
目的主机 一对一,一对多 仅能一对一
带宽 UDP报头短,消耗带宽更少 消耗更多的带宽
消息边界
可靠性
顺序 无序

有序

三次握手

SYN=1请求连接 FIN=1请求断开连接 seq=发送的数据包,ACK=1确认命令有效,ack=上一个seq+1

TCP服务器进程先创建传输控制块TCB,时刻准备接受客户进程的连接请求,此时服务器就进入了 LISTEN 监听状态

第一次握手 TCP客户进程也是先创建传输控制块TCB,然后向服务器发出连接请求报文,这是报文首部中的同部位SYN=1,同时选择一个初始序列号 seq=x ,此时,TCP客户端进程进入了 SYN-SENT 同步已发送状态

第二次握手 TCP服务器收到请求报文后,如果同意连接,则会向客户端发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号是ack=x+1,同时也要为自己初始化一个序列号 seq=y,此时,TCP服务器进程进入了 SYN-RCVD 同步收到状态

第三次握手 TCP客户端收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1,自己的序列号seq=x+1,此时,TCP连接建立,客户端进入ESTABLISHED已建立连接状态 触发三次握手

为什么要进行第三次握手?

第一次握手: 客户端向服务器端发送报文
证明客户端的发送能力正常
第二次握手:服务器端接收到报文并向客户端发送报文
证明服务器端的接收能力、发送能力正常
第三次握手:客户端向服务器发送报文
证明客户端的接收能力正常

四次挥手

数据传输完毕后,双方都可释放连接。最开始的时候,客户端和服务器都是处于ESTABLISHED状态,然后客户端主动关闭,服务器被动关闭。

第一次挥手 客户端发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态

第二次挥手 服务器端接收到连接释放报文后,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT 关闭等待状态

第三次挥手 客户端接收到服务器端的确认请求后,客户端就会进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文,服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。

第四次挥手 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态,但此时TCP连接还未终止,必须要经过2MSL后(最长报文寿命),当客户端撤销相应的TCB后,客户端才会进入CLOSED关闭状态,服务器端接收到确认报文后,会立即进入CLOSED关闭状态,到这里TCP连接就断开了,四次挥手完成

为什么客户端要等待2MSL?
主要原因是为了保证客户端发送那个的第一个ACK报文能到到服务器,因为这个ACK报文可能丢失,并且2MSL是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃,这样新的连接中不会出现旧连接的请求报文。


网站公告

今日签到

点亮在社区的每一天
去签到