网络协议基础知识应用 常见的网络协议有哪三种( 二 )


信号传输过程失真造成丢包、网络发生拥堵而丢包 。。。
我们还需要一个协议 , 这个协议需要有以下特质:
· 当丢包发生时 , 能够自动修复丢包 , 而无需人的手动干预
· 能够智能感知网络的拥堵情况 , 网络空闲时 , 尽最大速率发包;网络拥堵时 , 降低速率发包 , 不给互联网添堵
满足这个特质的协议 , 它的名字叫TCP协议 。
TCP协议TCP协议也不是什么大神 , 不过是一个任劳任怨的流量调度员 。说到底它就有一个本事:
确认机制!
凭着这个看家本领 , TCP可以保证应用数据的可靠传输 。
也正是这个确认机制 , 让千千万万个学习TCP协议的同学 , 苦苦挣扎痛不欲生!
但愿有同学读完这篇文章 , 快速脱离苦海 。。。
TCP确认机制通俗地说 , TCP会对发出的数据包(以下简称包裹)进行编号 , 如同快递的快递单号一样 。对方TCP收到包裹 , 会回复一个确认消息 , 确认收到了该编号的包裹了 。
这非常好理解 , 生活里这样的故事每天都在发生 。男生给异地的女友快递一个包裹 , 记下快递单号123456 , 过两天女友回复一个消息 , 快递单号123456已收到!
有同学会说 , 确认机制可以理解 , TCP发数据就发数据 , 但为何TCP发数据之前需要连接?
在互联网上可以找到各种各样的解释 , 而我的观点是:
双方通过TCP连接 , 分享彼此的应用数据块第一个字节的原点序号 。
如果TCP没有提前分享 , 接收方不知道接收的数据是否是第一个包 。
如果不是第一个包 , 接收方的TCP却将该数据包提交给应用程序 , 应用程序压根无法理解 。
为何无法理解?
应用程序以为是第一个包 , 其实并不是 , 应用程序的小翻译(HTTP/FTP/SMTP)瞬间懵逼 , 风雨中瑟瑟发抖 。。。
分享了原点序列号 , 即使第二个、第三个数据包先到达目的地 , 而第一个数据包姗姗来迟的情况 , 接收方的TCP可以耐心等待第一个数据包的到来 , 然后按序将数据包提交给应用程序 。这样应用程序的小翻译就会秒懂 。。。
有了TCP协议的帮助 , 即使老张的网线拔掉了一段时间 , 稍后再插入 , 恢复了网络连通性 , 老张中断的文件下载任务可以继续工作 , 而无需老张重新下载 。
UDP协议UDP有点像街头的邮筒 , 应用程序的数据包扔进邮筒就好了 , 就耐心地等待数据包到达目的地 。但扔进邮筒之前 , 需要写好以下信息:
· 收件人的地址(目的IP)
· 收件人的姓名(目的端口号)
· 寄件人地址(源IP)
· 寄件人姓名(源端口号)
IP司机会瞬间地将邮筒里的信件 , 运往世界各个角落 。
比较奢侈的是 , 一个IP司机运一件信件 。
文章开头的老张 , 其实一直在使用UDP协议 , 只是UDP协议不和老张直接打交道 , 老张觉察不到而已 。
但老张使用的浏览器、邮件客户端却一直和UDP协议直接打交道 。老张要下载文件 , 首先要域名解析获得服务器的IP地址 , 而完成域名解析任务的是DNS协议 。
DNS协议DNS协议将自己的域名解析请求报文扔到UDP邮筒里 , 被IP司机运输到域名服务器家中 , 服务器返回域名解析应答 , 同样通过UDP邮筒邮寄服务 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: