目录
1、协议
1.1、协议是什么
协议在计算中扮演着重要角色,规定数据通信和交互的规则和约定
1.2、协议的作用:
- 通信规范:包括数据格式、传输方式、消息结构(报文)、编码规则等,确保通信的可靠性、一致性、互操作性
- 数据交换:协议定义了数据在网络中的交换方式, 数据在网络中的交换方式、数据包的组织方式、传输顺序、错误检测,保证数据传输的正确性和完整性
- 安全性:协议可以规格数据的加密和身份的认证机制,保障通信的安全,可以防止数据被未经授权的人访问、篡改和泄露
- 设备互联:不同设备和不同系统之间能互相通信不同厂商之间的不同设备实现互操作性
- 网络管理:定义网络管理和监控的规范通过规格的的协议,管理员可以追踪管理网络中的设备、配置故障,确保网络的正常运行
2、传输层
2.1、传输层的两种协议:
2.1.1、TCP协议:传输层控制协议
TCP协议:是面对可靠的进程的通信协议,TCP提供的全双工服务(双向传输)数据可以在同一时间可以双向传输
每一个TCP都有发送缓存和接收缓存,用来临时存储数据
特点: 通信双方必须要建立连接,这个连接是有规范的、有步骤的
2.1.2、UDP协议:用户数据报协议
UDP协议是:无连接的不保障可靠性的传输层协议,发送端不关心发送的数据是否到达接收方,数据出错也不关系,接收方也不会对发送方作出回应
可靠性:有其他上层协议来保证
特点:传输数据的速度更快,效率更高,(直播就是流媒体)
TCP报文段:
2.2、 控制位
例如:flags(SYN)
- URP:紧急位,紧急指针有效位
- ACK:确认位,只有当ACK=1 确认序列号字段才有效,ACK=0 确认号字段无效
- Ack:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号,确认传输是否有问题
- SEQ:报文的序号
- SYN:同步位、连接位、同步序号位,TCP需要建立连接时,SYN=1 建立连接
- FIN:断开位,TCP完成数据传输之后,需要断开连接,断开连接的一方要把FIN设为“1”
- PSH:急迫位,设为“1”时,要求接收方尽快的将数据发送应用层
- RST:重置位,RST=1时,要求重新建立TCP连接
- TCPwin:接收缓存区的空闲空间(一般为设定好的)
2.3、 TCP连接(全双工)
2.3.1、三次握手
特点:一问一答的发送方式,能够使发送的数据已经被对方收到 ,发送端也可以一次连续发送多多包数据,接收端只要回复一次数据接收的命令(信号)
,发送端可以把待发送的数据分割成一系列的碎片,发送到对端(接收端),接收端把接收后的数据,根据序列号和长度重构出完整的数据,如果丢失某种数据包,接收端可以让发送端重传丢失那部分的数据,发送端收到收重传数据,接收端进行补齐(不分客户端和服务端)
2.3.2、 四次挥手
如果客户端发送最后一包ACK包就是放连接,一旦ACK包在网络中丢失,服务端将之只停留在最后确认状态,如果客户端发送ACK包后等待一段时间,这时服务端因为没有收到ACK包,会重发FIN包,客户端会相应这个FIN包,从发ACK包并刷新超时时间,这个机制和三次握手一样,也是为了保证在不可靠的网络连接中,进行可靠的连接断开确认
2.3.3、TCP是什么
- 是TCP基于连接控制,双方都需要进行相应
- 数据传输是加密的,数据通信的安全性较高
- 传输速度比较慢,不论是建立连接还是断开连接都有一定过程
2.3.4、TCP半关闭状态 :
指的是:一方已经停止发送数据,但另一方还需继续发送数据
一方先发送 FIN=1 这时候表示,不在发送数据,但是接收数据不受影响
半关闭状态应用情况:
- 一方面完成了数据的发送,但仍然希望接受对方发送的数据,例如:客户端发送了请求数据后后,不在发送其他数据
- 另一方需要主动发送数据的能力,但仍然需要等待对方发送剩余数据,例如:服务器发送了响应数据后,不在发送其他数据,但需要客户端发送完整数据后关闭
2.3.5、思考:
为什么一定是三次握手,不是四次握手,为什么不是三次挥手,而是四次挥手
其中之一的原因:TCP采用三次握手建立连接的原因是确保双方都具备了发送和接受数据的能了,防止因网络延迟或者数据丢失而导致的连接建立问题,防止在数据传输中,数据的重传而导致的二次传输无法正常接收,
是四次挥手,而不是三次挥手 是因为:在一方开始发送挥手请求后,说明它所发送的数据发送完成,单方面具备了该条件,(如果数据没传输完,就关闭会导致数据的错误和损坏、丢失)需要双方都同时具备关闭条件,并且在数据传输王城后,双方收到了相应的信号,从一方开始开始挥手指令后,到最后完全关闭正好四次挥手。
2.4、 常用端口号及其功能:
默认端口号 | 协议 | |
http | 80 | TCP |
nginx | 80 | TCP |
mysql | 3306 | TCP |
ftp | 21、20 | TCP |
ssh | 22 | TCP |
https | 443 | TCP |
2.5、UDP协议(流媒体)
UDP协议特点:基于非链接的
花费的开销小,性能损耗少、资源占用少
无连接,不可靠的传输协议,稳定性弱
2.6、UDP和TCP主要区别
TCP:数据传输稳定可靠,适用于网络通信质量要求较高的场景,需要准确无误的传输给对方,比如传输文件、发送邮件、浏览网页等
UDP:传输速度快,但可能产生丢包,所以适用于实时性要求较高的,对少量丢包没有太大要求的场景,比如:域名查询、语音通话、视频直播等
了解:UDP非常重要的应用场景:隧道网络,比如VPN,在SDN中用到的VXLAN