计算机网络(学习复习)
OSI开放式互联参考模型(OSI七层协议)
第一层物理层
解决两台物理机之间的通信需求,即机器A向机器B发送bit流,物理层主要定义了物理设备的标准。传输bit流
第二层数据链路层
定义了如何格式化数据来进行传输,如何控制对物理介质的访问,错误检测和纠正。传输帧
第三层网络层
将网络地址翻译成相应的物理地址,并定义如何将数据从发送方路由到接收方。数据包、IP
第四层传输层
接收上一层的数据,在必要的时候把数据进行分割,并将这些数据交个网络层,且保证这些数据有效到达、TCP、UDP
第五层会话层
建立和管理应用程序之间的通信、应用程序自动调用TCP、IP收发信息
第六层表示层
帮我们解决不同系统之间语法不同的问题
第七层应用层
规定发送方和接收方必须使用一个固定长度的消息头。指在使用户更加方便的使用网络。HTTP
OSI的实现“TCP/IP协议”
TCP的三次握手
IP
IP协议是一种无连接的协议,不会占用通信线路,每条线可以满足多个应用使用
IP数据包不能保证是否顺序发送是否全部送到所以是不可靠的
需要由上层协议控制
传输控制机械TCP简介
面向连接的、可靠的、基于自己留的传输层通信协议
将应用层的数据流分割成报文段并发送给目标节点的TCP层
数据包都有序号,对方收到则放松ack确认,未收到则重传
运用奇偶校验和来验证数据在传输过程中是否有误
说说TCP的三次握手
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
- 第一次握手:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
- 第二次握手:服务器收到SYN包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
- 第三次握手:客户端收到服务器端SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
为什么需要三次握手才能建立起连接
为了初始化Sequence Number的初始值
首次握手的隐患—SYN超时
- Server收到Client的SYN,回复SYN-ACK的时候未收到ACK确认
- Server会不断重试直至超时,Linux默认重试5次也就是共等待63秒才断开连接
TCP的四次挥手
“挥手”是为了终止连接连接
- 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态;
- 第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态;
- 第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态;
- 第四次挥手:Client收到FIN后,Client进入TINE_WAIT状态,接着发送一个ACK给Server,确认序号为接收序号+1,Server进入CLOSE装填,完成四次挥手