我们说会话层建立连接之后,就要建立传输层连接,那么为什么要建立这个传输层连接呢,我们先看一下传输层的作用是什么?

传输层的主要作用是处理我们的数据在发送的时候产生的数据包错误,数据包次序不对,数据丢失,进行重传等。

那么这句话我们应该如何理解呢?

首先我们要知道我们在进行发送文件时,很多时候会因为文件过大,而导致数据无法一次性进行传输,所以我们要把数据包分割成很多份,分次进行传输,那么很可能在传输的路上,导致了数据包丢失了,或者到达对端的次序错了,而传输层就是为了解决这种问题而出现的

举个例子

我们把数据包看成成一个快递包裹,传输层就是邮递服务,比如我们把一叠信交给邮递员之后,谁也不能保证信件按照原先叠放的顺序一次到达,也不能保证信件都在同一天送到,甚至不能保证全部送到和有没有被拆开,邮递服务是为了保证快递包裹准确无误的到达,传输层就是保证数据包准确无误的到达。

那么传输层是如何保证数据包的准确无误呢?这时候不得不介绍一下我们的传输层的协议TCP了

TCP(协议号6)

TCP的主要特点:

1.面向连接,应用程序在使用tcp之前,必须建立tcp连接,在传输完成之后再释放连接

2.点对点连接(UDP可以一对多,一对一)

3.tcp连接传输的数据是可靠的交付服务

4.全双工,双方可以再任意时刻发送数据

5.面向字节流,虽然应用程序和TCP交互的是大小不等的数据块,但是tcp只保证,发送方和接收方接到的字节流相同。

TCP连接:

每条tcp连接有两个端点,连接的两个端点称为套接字(socket)

套接字是由ip和端口号组成的。例如 127.0.0.1:8080

TCP数据包格式及其作用

Source Port(源端口):源主机的应用程序使用的端口号。

Destination Port(目的端口):目的主机的应用程序使用的端口号。

每个TCP头部都包含源和目的端的端口号,这两个值加上IP头部中的源IP地址和目的IP地址可以唯一确定一个TCP连接

Sequence Number(序列号):用于分片之后的数据进行重组

Acknowledge Number(确认号):用于对接收到的数据的确认。

Header length(包头长度):包头长度,默认20字节

Resv:保留6位,通常为0.

Flag(标记),标志里有6位,每一位代表不同的作用

Window(窗口):滑动窗口,用来做流量控制

Checksum(包校验和):校验TCP头部完整性。

Urgent Pointer(紧急指针): TCP协议在数据段中设置URG位,表示进入紧急模式.接收方可以对紧急模式采取特殊的处理.很容易看出来,这种方式数据不容易被阻塞,这个16位数被添加到序列号上用于指明紧急数据的结束

Options (可选项): 这个是额外的功能,提供包括安全处理机制、路由纪录、时间戳记、 严格与宽松之来源路由等。

Padding(填充):由于Options的内容不一定有多大,但是我们知道 TCP 每个数据都必须要是 32bits,所以,若包头加上Options的数据不足 32bits时,则由 padding 主动补齐。

TCP可靠传输的工作原理

tcp通过校验和,重传控制,序号标识,滑动窗口,确认应答实现可靠传输。如丢包时的重发机制,还可以对次序乱掉的分包进行顺序控制。

TCP保障了我们数据的可靠传输,确认每一个数据包能够准确无误的到达,那么对于一些对于数据要求没有那么高的应用,我们应该用什么传输呢?这时候就去引入了我们的UDP。

UDP(协议号17)

UDP相比tcp的优点就是不用花费时间建立连接,直接发送数据,比较快。其二的话就是UDP报头长度小于UDP。而减少的这些字节就可以用来承载数据。我们先看一下UDP的报文格式

Source port:源端口

Destination port:目的端口

Length:头部长度

Checksum:校验和(在这里校验是可选的,也可以不校验)

可以看到UDP相比于TCP少了序列号,确认号,紧急时针滑动窗口等选项,而没了包头中没有这些选项对于数据的正确无误就没了保障,所以我们说UDP是不可靠的。

TCP与UDP区别总结:
①TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

②TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付

Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。

③UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。

④每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

⑤TCP对系统资源要求较多,UDP对系统资源要求较少。

tcp udp区别优缺点_CCNA必懂篇,传输层协议TCP/UDP的区别和作用相关推荐

  1. 传输层协议TCP和UDP

    本文力图简洁,让读者对TCP和UDP有个初步的认知.闲话少说,现在开始吧.TCP和UDP都是传输层的协议.TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送.UDP不建立连接而直接发送,对未送 ...

  2. 8月11日 网工学习 APR协议 传输层协议 TCP UDP 数据封装转发全过程

    目录 APR协议 传输层协议 TCP UDP 数据封装转发全过程 APR协议 作用:将IP地址解析为MAC地址 ARP的主要内容 在ARP高速缓存表中查找目的IP地址对应的MAC地址 广播发送ARP请 ...

  3. 划重点 传输层协议 tcp三次握手和四次挥手

    文章目录 传输层的协议 1.TCP/IP协议组的传输层协议 2. TCP报文段 3.TCP建立连接的过程 3.2 TCP常用端口号及其功能 4.UDP协议 4.1 UDP报文的首部格式 4.2 UDP ...

  4. 计网 - 传输层协议 TCP:TCP 为什么握手是 3 次、挥手是 4 次?

    文章目录 Pre TCP 协议 主机到主机(Host-To-Host) 什么是连接和会话? 双工/单工问题 什么是可靠性? TCP 的握手和挥手 TCP 协议的基本操作 建立连接的过程(3次握手) 断 ...

  5. Linux_网络_传输层协议 TCP通信滑动窗口(快重传),流量控制,拥塞控制(慢启动),延迟应答,捎带应答,TCP常见问题(字节流,粘包),Listen半连接队列

    紧跟Linux_网络_传输层协议 TCP/UDP继续补充 文章目录 1. TCP通信时滑动窗口(效率) 2. 流量控制(可靠性) 3. 拥塞控制(慢启动) 4. 延迟应答 5. 捎带应答(提高通信效率 ...

  6. 传输层协议TCP和UDP的区别详解

    一.TCP协议 1.TCP的优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认.窗口.重传.拥塞控制机制,在数据传完后,还会断开连接用来节约系 ...

  7. 传输层协议TCP与UDP的区别

    TCP协议与UDP协议作为传输层最常用的两种传输协议,这两种协议都是使用IP作为网络层协议进行传输.网络层IP与传输层的关系可以简单理解成生活中收快递.IP协议为每个上网的主机分发一个IP地址,这个地 ...

  8. 简单理解TCP/IP传输层协议TCP和UDP

    TCP/IP模型中的传输层主要负责端到端通信,和数据链路层类似,数据链路层负责点到点的通信.TCP/IP模型的传输层主要协议有TCP (Transmission Control Protocol,传输 ...

  9. 《图解TCP/IP》阅读笔记(第六章 6.5、6.6)——其他代表性的传输层协议与UDP、TCP首部

    6.5 其他传输层协议 实际上,UDP与TCP在很长的一段时间,霸占了"传输至尊榜"中的前两位,难以分出高下,但是仍有几款"神兵利器",被收入兵器榜前十位,接下 ...

最新文章

  1. 李开复对谈张亚勤:科学家创业需要企业家伙伴,开放心态看待元宇宙 | MEET2022...
  2. 北大图灵班本科生带来动画CG福音,「最懂骨骼的卷积网络」,无需配对样本实现动作迁移 | SIGGRAPH...
  3. LeetCode Palindrome Partitioning(dfs +回文串 )
  4. ASP.NET Core2.0 环境下MVC模式的支付宝PC网站支付接口-沙箱环境开发测试
  5. 视频编解码,bbv 缓冲区的上溢和下溢
  6. Docker Desktop 向大公司宣告收费,网友大呼:是时候弃用了!
  7. linux mysql 性能提高,高手心得:提高MySQL性能的方法
  8. java 泛型集合示例_Java 泛型(示例代码)
  9. 深入理解:overflow:hidden——溢出,坍塌,清除浮动
  10. OCR技术系列实践:银行卡、身份证、门牌号、护照、车牌、印刷体汉字识别
  11. 剑指 Offer II 110. 所有路径
  12. vs2012旗舰版 有效注册密钥
  13. C++读写Excel表格教程
  14. Matlab画图 线型控制
  15. web请求报出 “超过了最大请求长度”
  16. 如何自学CAD制图?学会这5个方法,只需一周就能从小白变大神
  17. s5pv210时钟系统详解
  18. 基于ssm整合的网上书城
  19. 【GIT】error: failed to push some refs to 'https://github.com/username/python.git'
  20. 信息系统项目管理师2019年下半年上午试题解析(三)

热门文章

  1. 使用 JavaCSV api 读取和写入 csv 文件
  2. nginx将泛解析的匹配域名绑定到子目录配置方法
  3. LeetCode简单题之检查是否区域内所有整数都被覆盖
  4. CPU架构的llvm后端
  5. 华为不造车,广汽合作智能驾驶
  6. 自动驾驶平台,阵营, 主要传感器与场景联系
  7. 2021年大数据ELK(十五):Elasticsearch SQL简单介绍
  8. CentOS 8 安装图解
  9. [JAVA EE] JPA 技术实践:完成增、删、改、查操作
  10. Android ViewAnimationUtils (动画) 的使用