linux系统运维基础8

1、简述osi七层模型和TCP/IP五层模型

网络协议通常分不同层次进行开发,每一层分别负责不同的通行功能。

OSI七层模型

OSI:Open System Internetconnection(开放系统互联),由ISO国际标准化组织定义;目的是规范网络环境,实现软硬件兼容;自上而下共分为七层

应用层:各种应用程序及接口

表示层:对数据进行转换,加密、压缩

会话层:维持不同应用程序的数据分离

传输层:提供可靠的端到端的报文传输和差错控制

网络层:将分组从源端到目的端,提供路由选择

数据链路层:将分组数据封装成帧,提供节点到节点的方式传输

物理层:在媒体上传输比特,提供电气和机械的规约

特点:上层依赖于下层,下层为上层提供服务


TCP/IP五层模型

TCP/IP(Transmission Control Protocol/Internet Protocol)协议属于网络传输协议。TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。TCP/IP的应用层相当于OSI七层协议的应用层、表示层、会话层,其他各层一一对应。


2、总结描述TCP三次握手四次挥手


上图为TCP整个完整的通信过程,首先经过三次握手建立连接(绿色部分),连接建立后可以正常通信(蓝色部分),通信完毕需要四次挥手断开连接(红色部分)

三次握手

tcp是可靠的传输控制协议,三次握手能保证数据可靠传输又能提高传输效率。

如果client向server发送的第一条请求连接报文段由于网络原因,延迟发送。由于client没有接收到server对SYN的确认报文段,会重发SYN报文。server回复ACK,建立连接。数据发送完毕,这条连接正常关闭。这时,延迟的SYN报文发送到server,服务器误认为这是client重新发送的同步报文,又回复了一个ACK,和客户端建立了连接。

如果server给client发送的ACK报文,由于网络原因,报文被丢弃,但server认为已经建立好连接,但是client没有收到server发来的确认报文,认为没有建立好连接。client会重新发送SYN报文,此时server已经处于ESTABLISHED状态,认为已经建立好连接。

如果client向server发送了第一条请求连接报文段,但发送过后client由于程序关闭或超时导致直接关闭,但server收到了客户端发来的请求,并回复ACK报文,建立连接。这样会浪费服务器的资源。

四次挥手

客户端向服务器发送连接释放报文段并停止发送数据。此报文段中终止控制位FIN=1,seq=u(等于前面已传送过的数据的最后一个字节加1)。此时A进入FIN-WAIT-1(终止等待1)状态。TCP规定,FIN报文段即使不携带数据也要消耗一个序号。

服务器收到连接释放报文段后就发出确认报文段。此报文段中确认号ack=u+1,seq=v(等于前面已传送过的数据的最后一个字节加1)。此时服务器进入CLOSE-WAIT(关闭等待)状态。TCP服务器进程通知应用进程,客户端到服务器的连接释放了,这时的TCP连接处于半关闭(half-close)状态,但服务器到客户端的连接并未关闭,此时服务器发数据,客户端仍要接收。

客户端收到服务器的确认后,就进入FIN-WAIT2(终止等待2)状态,等待服务器发出的连接释放报文段

如果服务器已没有要发送的数据,就发送连接释放报文段。此报文段中FIN=1,seq=w(在半关闭状态中B可能发送了数据),ack=u+1。此时服务器进入LAST-ACK(最后确认)状态

客户端收到了服务器的连接释放报文段后就发出确认报文段。此报文段中ACK=1,ack=w+1,seq=u+1。此时客户端进入TIME-WAIT(时间等待)状态

此时TCP连接还没有释放掉,必须经过时间等待计时器(TIME-WAIT timer)设置的2倍的最长报文段寿命MSL(Maximum Segment Lifetime)后,客户端才进入到CLOSED状态。MSL建议设为2分钟。当客户端撤销相应的传输控制块TCB后,就结束了这次TCP连接

服务器收到客户端的确认报文,就进入CLOSED状态。服务器撤销相应的传输控制块TCB后,就结束了这次的TCP连接

3、描述TCP和UDP区别

1)基于连接vs无连接

TCP是面向连接的协议,而UDP是无连接的协议。

2)可靠性不同

TCP提供交付保证,这意味着一个使用TCP协议发送的消息是保证交付给客户端的。如果消息在传输过程中丢失,那么它将重发,这是由TCP协议本身控制的。另一方面,UDP是不可靠的,它不提供任何交付的保证。一个数据报包在运输途中可能会丢失。这就是为什么UDP是不适合保证交付的项目。

3)有序性

TCP保证了消息的有序性。该消息将以从服务器端发出的同样的顺序发送到客户端,尽管这些消息到网络的另一端时可能是无序的。TCP协议将会为你排好序。UDP不提供任何有序性或序列性的保证。数据包将以任何可能的顺序到达。这就是为什么TCP是适合需要顺序交付方式的应用,尽管有基于UDP的协议通过使用序列号和重传来提供有序和可靠性的应用

4)速度

TCP速度比较慢,而UDP速度比较快,因为TCP必须创建连接,以保证消息的可靠交付和有序性,他需要做比UDP多的多的事。这就是为什么UDP更适用于对速度比较敏感的应用,例如:在线视频媒体,电视广播和多人在线游戏。

5)头大小

TCP具有比UDP更大的头。一个TCP数据包报头的大小是20字节,每行32位,5行。UDP数据报报头是8个字节,每行32位,2行。TCP报头中包含序列号,ACK号,数据偏移量,保留,控制位,窗口,紧急指针,可选项,填充项,校验位,源端口和目的端口。而UDP报头只包含长度,源端口号,目的端口,和校验和。

6)拥塞或流控制

TCP有流量控制。在任何用户数据可以被发送之前,TCP需要三数据包来设置一个套接字连接。TCP处理的可靠性和拥塞控制。另一方面,UDP不能进行流量控制。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容