java 个人收款码 centos7 reactjs nhibernate 3d vue论坛 h5表格模板 郑州普通话考试 php项目实战 jquery的点击事件 css最后一个子元素 solr索引 mysql组合索引 升级python版本 mysql时间戳转日期 python数据库 python3下载安装 python的open函数 python怎么下载 java文件写入 java中的队列 java抽象方法 java数组删除 java的map java定义变量 linux启动 linux密码 bcdautofix 机械下载 python入门经典 51脚本 max电池容量 摩斯密码翻译器 tableau下载 子节点 免费图片文字识别软件 ios12录屏 qq飞车刷车 appdata是什么文件夹
当前位置: 首页 > 学习教程  > 编程语言

TCP协议的概念以及和UDP协议的区别

2020/8/31 12:17:00 文章标签:

TCP协议的基本概念

TCP的全程是Transmission Control Protocol
1.TCP协议为应用程序提供了可靠的、端到端的、面向连接的字节流通信的协议
2.利用网络层IP协议提供的不可靠的分组传输服务,用来解决的重传和排序问题
字节流:应用程序对数据的发送和接受没有边界限制
面向连接:在传送数据之前,明确知道接收方的存在以及传输的一些性质(缓冲区的大小,发送序号的初始值)
Unicast:只支持两端点之间的通讯,不支持多播(Multicast)和广播(Broadcast)面向字节流的流逝协议
全双工:支持双方同时进行读写操作
进程寻址
小于1024的端口号为固定端口号(众所周知端口号:WWW端口号为80,邮件的端口号为25和110号端口)
寻址过程:用IP地址来找到主机,再用端口号来找到某个进程(socket)
TCP报头如下:
在这里插入图片描述
源端口和目的端口:分别指要发送的主机和要发送目地的主机
序列号:给数据的编号
确认号:接收方接收到数据回复给发送发的编号
偏移:TCP报文段的首部长度,四个字节
标志:分为六个标志
URG,紧急指针有效
ACK,确认号有效
PSH,缓冲区不必等到满即可上传(有紧急指针时,它是不希望被放在缓冲区的,因为需要被修改)
RST,连接崩溃时用于连接复位
SYN,建立连接时使用
FIN,断开连接
紧急指针字段:数据部分需要被紧急处理的最后一个编号
窗口字段:用来进行流量控制,用的是滑动窗口
校检和:接收端通过CRC算法来检验tcp报文是否损坏(包括头部和数据),这是tcp安全可靠的重要保障
封装
1.数据部分和头部封装在一起成为一个报文
2.报文向下调用网络层功能分装一个IP
3.在向下调用数据链路层封装成最终结果

在传输层协议中,还有一个重要的协议就是UDP协议,它的特点是:为应用程序提供无连接的数据传输服务

TCP与UDP的区别:
1.TCP相对于UDP来说是可靠的,有保证的。
2.TCP是面向连接的,UDP是无连接的
3.TCP是面向字节流的,UDP是面向报文的
4.TCP是全双工的可靠信道,UDP是不可靠信道。
5.TCP对系统资源的要求多,UDP对系统资源的要求小(开销问题)

问题1:为什么TCP比UDP可靠呢?
1.tcp采用应答机制,即每次发送一个tcp报文都需要得到接收端的回答,才人为是传输成功
2.tcp采用超时重传,每次发送数据报后会有一个计时器,如果在规定的时间内内有得到回复,就会重新发送一次。接收端接收到数据时,会将其按序号进行排列。然后根据用户定义的缓冲区大小来将其读出。

问题2:为什么TCP开销要比UDP多?
1.TCP每次发送数据都会有一个至少20字节大小的报头
2.TCP需要给每个报文编号,确保不会不会乱序


本文链接: http://www.dtmao.cc/news_show_150010.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?