这里是修真院后端小课堂,每篇分享文从java
【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】程序员
八个方面深度解析后端知识/技能,本篇分享的是:算法
【什么是TCP/IP协议?TCP的三次握手指的是什么,为何必定要三次握手,而不是四次或者是两次? 】后端
标题:浏览器
【修真院java 小课堂】什么是TCP/IP协议?TCP的三次握手指的是什么,为何必定要三次握手,而不是四次或者是两次?安全
开场语:服务器
你们好,我是IT修真院郑州分院第12期的学员张泉良,一枚正直纯洁善良的JAVA程序员,今天给你们分享一下,修真院官网JAVA任务二,深度思考中的知识点—— 什么是TCP/IP协议?TCP的三次握手指的是什么,为何必定要三次握手,而不是四次或者是两次?网络
网络协议:app
书本上的定义:网络协议是为计算机网络中进行数据交换而创建的规则、标准或约定的集合编码
网络协议就是人为规定的一套通讯规范,只要双方都遵循这个规范,就能实现交流
TCP/IP具体含义:利用ip进行通讯时所必须用到的协议群的统称。
具体来讲,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议。
TCP/IP协议族是一个四层协议系统,自底而上是数据链路层、网络层、传输层和应用层。上层协议使用下层协议提供的辅助。
(1) 数据链路层实现了网卡接口的网络驱动程序,以处理数据在物理媒介上的传输
(2) 网络层实现数据包的选路和转发。网络层的任务就是选择中间节点(路由器),以肯定两台主机之间的通讯路径
(3) 传输层为两台主机上的应用程序提供端到端的通讯。传输层只关心通讯的起始端和目的端,忽略数据包的中转过程
传输层协议主要有三个:TCP协议、UDP协议和SCTP协议
(4) 应用层负责处理应用程序的逻辑。
数据链路层、网络层和传输层负责处理网络通讯细节,这部分必须既稳定又高效,所以在内核空间中实现。
而应用层则在用户空间,由于它负责处理众多逻辑,好比文件传输、名称查询等。
(1)TCP/IP协议通讯的过程?
浏览器访问服务器服务流程:
一、浏览器访问网址
二、dns协议解析域名
三、http协议---http数据,肯定数据传输格式等
四、TCP协议---加TCP首部----端口之间发送数据包----三次握手达成链接
五、IP协议---加IP首部----经过IP地址肯定网络地址
六、以太网协议--加以太网首部----肯定mac地址(主机网卡的惟一标识)
(2)如何创建TCP/IP链接?
TCP协议提供可靠的链接服务,链接是经过三次握手进行初始化的。
所谓三次握手是指创建一个 TCP 链接时须要客户端和服务器端总共发送三个包以确认链接的创建。
基础信息:
TCP报文格式
(1)序列号:Sql序号,用来标识数据包,发起方发送数据时对此进行标记。
(2)确认序号:Ack序号,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
(3)标志位:共6个,即SYN、ACK、PSH、RST、URG、FIN
(3)为何要三次握手?
在《计算机网络》一书中其中有提到,三次握手的目的是“为了防止已经失效的链接请求报文段忽然又传到服务端,
于是产生错误”
三次握手是在安全可靠的基础上,握手次数最少的方案。两次握手并不能保证可靠性。四次握手又浪费了效率
(1) TCP创建链接为何须要三次握手而结束要四次挥手?
三次握手:client请求链接SYN---server确认收到,发送ACK和SYN---client确认收到
四次挥手:client请求关闭FIN---(server确认收到,发送ACK---server继续发送数据直到完毕,发送FIN)
----client确认收到
(2)TCP与UDP的区别
(3) TCP的可靠传输原理
中止等待协议
连续ARQ协议
(1) https://www.jianshu.com/p/e7f...
(2) https://blog.csdn.net/be_happ...
(3) 计算机网络第6版
7. 更多讨论:
Q1:Sequence number序列号是什么?
A1:Sql序号,用来标识数据包,发起方发送数据时对此进行标记。数据包的序号,有操做系统根据必定的算法生成,至关于id的做用。
Q2:acknowledgement number和ACK区别?
A2:ACK:标识符,只有0和1,只要有数据包的传输,ACK就要set为1;
acknowledgement number:ack序号,只有ACK标志位为1时,确认序号字段才有效,ack=Seq+1;
在数据包传输过程当中ack=seq+len;
Q3:TCP与UDP的区别
A3:TCP协议提供面向链接的,可靠的传输服务,但速度较慢,适合文件下载等传输任务;UDP协议提供无链接的,不可靠的传输服务,但速度较快,适合媒体流等看重传输速度的传输任务
8. 鸣谢:
9. 结束语:
今天的分享就到这里啦,欢迎你们点赞、转发、留言、拍砖~