时间:2022-10-09 18:11:17 | 浏览:396
协议:
TCP(Transmission Control Protocol,传输控制协议)
UDP(User Datagram Protocol,用户数据报协议)
端口:
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,其传输的单位是报文段。
特征:
①面向连接
②只能点对点(一对一)通信
③可靠交互
④全双工通信
⑤面向字节流
TCP 如何保证可靠传输:
①确认和超时重传
②数据合理分片和排序
③流量控制
④拥塞控制
⑤数据校验
TCP 报文结构
TCP 首部
TCP:状态控制码(Code,Control Flag),占 6 比特,含义如下:
URG:紧急比特(urgent),当 URG=1 时,表明紧急指针字段有效,代表该封包为紧急封包。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据), 且上图中的 Urgent Pointer 字段也会被启用。
ACK:确认比特(Acknowledge)。只有当 ACK=1 时确认号字段才有效,代表这个封包为确认封包。当 ACK=0 时,确认号无效。
PSH:(Push function)若为 1 时,代表要求对方立即传送缓冲区内的其他对应封包,而无需等缓冲满了才送。
RST:复位比特(Reset),当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
SYN:同步比特(Synchronous),SYN 置为 1,就表示这是一个连接请求或连接接受报文,通常带有 SYN 标志的封包表示『主动』要连接到对方的意思。
FIN:终止比特(Final),用来释放一个连接。当 FIN=1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
UDP(User Datagram Protocol,用户数据报协议)是 OSI(Open System Interconnection 开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,其传输的单位是用户数据报。
特征:
①无连接
②尽最大努力交付
③面向报文
④没有拥塞控制
⑤支持一对一、一对多、多对一、多对多的交互通信
⑥首部开销小
UDP 报文结构
UDP 首部
TCP 面向连接,UDP 是无连接的;
TCP 提供可靠的服务,也就是说,通过 TCP 连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP 尽最大努力交付,即不保证可靠交付
TCP 的逻辑通信信道是全双工的可靠信道;UDP 则是不可靠信道
每一条 TCP 连接只能是点到点的;UDP 支持一对一,一对多,多对一和多对多的交互通信
TCP 面向字节流(可能出现黏包问题),实际上是 TCP 把数据看成一连串无结构的字节流;UDP 是面向报文的(不会出现黏包问题)
UDP 没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如 IP 电话,实时视频会议等)
TCP 首部开销20字节;UDP 的首部开销小,只有 8 个字节
原因
TCP 是一个基于字节流的传输服务(UDP 基于报文的),“流” 意味着 TCP 所传输的数据是没有边界的。所以可能会出现两个数据包黏在一起的情况。
解决
发送定长包。如果每个消息的大小都是一样的,那么在接收对等方只要累计接收数据,直到数据等于一个定长的数值就将它作为一个消息。
包头加上包体长度。包头是定长的 4 个字节,说明了包体的长度。接收对等方先接收包头长度,依据包头长度来接收包体。
在数据包之间设置边界,如添加特殊符号 标记。FTP 协议正是这么做的。但问题在于如果数据正文中也含有 ,则会误判为消息的边界。
使用更加复杂的应用层协议。
概念
流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收。
方法
利用可变窗口进行流量控制
概念
拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。
方法
慢开始( slow-start )
拥塞避免( congestion avoidance )
快重传( fast retransmit )
快恢复( fast recovery )
TCP的拥塞控制图
今天的分享就到这里了,下期为大家分享TCP连接管理,大家要好好学C++哟~
写在最后:对于准备学习C/C++编程的小伙伴,如果你想更好的提升你的编程核心能力(内功)不妨从现在开始!
编程学习书籍分享:
编程学习视频分享:
整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)
欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!
对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!
(只要有爱,屌丝也能逆袭)网络推广,顾名思义就是在利用互联网推广自己的产品。在百度一搜,网络推广方法一大堆,仔细一看,真正实用的方法却少之又少,适合屌丝的方法就更加少了。其实,网络处处都能推广,关键是有一双善于发现的眼睛。下面为大家分析一下
荆州新闻网消息(记者 肖琦)9月23日下午,荆州市委宣传部、荆州市网信办组织我市重点新媒体、自媒体人参观荆州经开区部分新开工、新投产的大型项目和企业。各位网络媒体大V通过直播、短视频、图文报道等方式全方位、多角度宣传推介荆州经开区。当天,我
中新网合肥12月25日电(赵强 黄政)赌徒为逃避警方打击专门开发网络赌博APP,涉案资金流水高达7000余万元。记者25日从安徽含山警方获悉,近日,含山警方成功破获一起特大跨境网络赌博案,彻底打掉一个集合软件开发、业务推广、层级代理、开设赌
IT之家 10 月 9 日消息,今日是世界邮政日,今年世界邮政日主题为“邮政守护地球家园”。据国家邮政局网站,党的十八大以来,我国邮政业取得了历史性成就、发生了历史性变革,进入了年快递件量过千亿件、年快递收入上万亿元的新阶段,实现了建制村直
最近好多企业家朋友来咨询一个企业做好互联网宣传需要怎么去做?今天我们就来浅谈一下具体应该怎么做才能更有效,第一步是要圈地,所谓圈地很简单,就是所谓的网址域名。至于你是中文域名还是英文域名,根据自己的业务范围来进行有效的选择,第二步就是建厂房
网络推广方式有哪些吸引人 【发软文用TM媒介】一篇好的网络推广软文要层层相扣,从抓住不认识的陌生人的眼睛吸引他浏览,到赢得信任,最后让他自愿掏钱购买你的产品,软文发布前要有非常清晰的逻辑结构。一抓一大把的软文发布会吸引别人的注意,先经过你的
导语推广方式也不是单一选择,可选择适合自己推广的几个方式,其中用户是基础,关键靠推广,最终还是要看转化。很久没有踏踏实实的写一篇文章了,中午吃饭的时候翻了一翻微信好友列表,占满我前面对话框的都是网络推广运营商,一大串群发广告铺天盖地,什么
做网络推广要注意的问题,首先对你的公司、产品、目标消费者等先定位,然后才使用合适的的推广方法,而不是看什么就推广什么,不然会很累,也没效益!在此,给大家分享几个我了解的推广重要方法如下:网络推广1. 搜索引擎推广方法 :搜索引擎推广是指利用
一、强类型和弱类型语言:C、 C++、 Java 、Python都是强类型的语言。PHP是弱类型的语言。强类型语言是一种强制类型定义的语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就是该数据类型。而弱类型语言是一种弱类型定义
首先,我们先普及一下编程语言的基础知识。用任何编程语言来开发程序,都是为了让计算机干活,比如编写一篇文章,下载一首MP3等,而计算机干活的CPU只认识机器的指令,所以,尽管不同的编程语言差异极大,最后都得“翻译”成CPU可以执行的机器指令。