传输层作用
在数据传输之前,首先建立连接,协商参数
将数据进行分段,符合传输介质的限制要求
因为数据分段,所以要进行重组
提供端口号,根据不同的端口号,将数据发送到相应的应用层协议
不同的场合,环境,应用,使用不同的传输协议

TCP
面向连接
在发送数据之前,首先先找到对方建立一个连接,相当于一个逻辑通道

可靠协议,效率低
每收到一次数据,要进行确认,确保对方确定收到了这个数据

TCP需要三次握手
就好比打电话,需要经过拨号,振铃,接通,才能进行通话

过程:
A,我要跟你建立连接
B,好的,我知道了,我也要跟你建立连接
A,我知道你收到了我的连接请求,我也收到了你的连接请求

滑动窗口:
主要为了避免一次性发送的数据过多,导致对方缓存溢出。
滑动窗口是动态协商,也就是说,在建立连接的时候,就会进行协商
同时,在缓存区发生变化的时候,也会进行协商

TCP四次握手
主要为了避免当一方断开连接,而另一方不知道的情况下,需要耗费资源去维护本该断开的连接

过程:
假设三次连接已经建立完成
A,我要跟你断开连接了
B,好的,我知道你要断开连接了
B,我也要跟你断开连接了
A,好的,那就断开连接吧

UDP
不需要建立连接,也不需要进行确认
尽力而为,效率相比TCP要高
比如对讲机,拿起来就说,而不管对方有没有收到
直播视频,使用UDP协议
点播视频,使用TCP协议

TCP/UDP协议都是工作在传输层中
在传输层,有一个概念,叫做端口号

每一个端口号,对应一种应用层协议,比如端口号80,代表HTTP协议
而应用层协议,规定了使用何种传输协议来进行传输

比如你访问网页,使用HTTP协议,端口号为80,那它是使用TCP来进行传输的
比如,你进行域名解析,使用DNS,端口号为53,那么它就是使用UDP协议

三种类型
知名端口号0-1023,以及分给特定的协议,不能随便使用
如果要使用,需要向互联网编号分配机构申请(IANA)

注册端口:有限的使用1024-49511,比如8080,是作为80的补充,已经注册
私有端口:随意使用49512-65535
正常情况下:源端口为随机生成,目的端口号为知名端口
比如你访问网页,源端口由你电脑随机分配,目的端口是80

TCP分段重组
为何分段:因为数据传输大小受限于传输链路,或者介质的要求。
当超过限制,TCP就把大的数据拆分成一个个小段

TCP分段,基于MISS,动态协商
一般是1500-40字节(20字节IP头部,20字节TCP头部)

因为数据被分段了,那么在传输的过程中,由于链路等其他因素收到的数据包顺序不一致,就会出现错误

所以,在分段的时候,对每个段进行编号,当对方收到的时候,按照序号进行排列,保证数据的准确性。

UDP不会进行分段,UDP分段基于以太网中的MTU
并且UDP不会进行数据重组,而是按照先来后到的顺序

通俗版 TCP/UDP三次握手 四次握手相关推荐

  1. 通俗理解TCP的三次握手

    三次握手流程的本质,可以这么理解:TCP的三次握手其实是双方各一次握手,各一次确认,只是其中一次握手和确认合并在一起. 当然也可以更通俗的去理解: "喂,你听得到吗?" " ...

  2. TCP/IP详解--TCP/IP中三次握手 四次握手状态分析

    TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标 ...

  3. TCP三次挥手四次握手(面试总结)

    1. 为什么建立连接协议是三次握手,而关闭连接却是四次握手呢? 全双工通信. 这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而 ...

  4. 三次握手 四次握手 与socket函数的关系

    我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠so ...

  5. 一切皆socket!网络编程:三次握手 四次握手 与socket函数的关系

    转载地址:http://www.cnblogs.com/suntp/p/6434644.html 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与w ...

  6. 随笔 - 58, 文章 - 0, 评论 - 0, 引用 - 0 三次握手 四次握手 与socket函数的关系

    1.网络中进程之间如何通信? 2.Socket是什么? 3.socket的基本操作 3.1.socket()函数 3.2.bind()函数 3.3.listen().connect()函数 3.4.a ...

  7. TCP三次挥手四次握手

    三次握手: 客户端发起: 1.向服务器端发送报文SYN=1,ACK=0;客户端进入SYN-SEND状态. 2.服务端收到SYN=1,ACK=0的请求报文,向客户端返回确认报文SYN=1,ACK=1,服 ...

  8. TPC三次握手/四次握手

    TCP数据包结构 TCP三次握手 TCP四次挥手

  9. 网络基础知识(TCP/UDP报文格式)四

    1.TCP报文格式 源端口号: 占用16位,报文来自哪个端口. 目的端口号: 占用16位,报文要传输到哪个端口. Seq序列号: 占用32位,一次TCP通信(从TCP连接建立到断开)过程中某一个传输方 ...

  10. 网络层协议与应用及传输层TCP/UDP协议

    网络层协议与应用及传输层TCP/UDP协议 目录 一.IP数据包格式 二.ICMP协议 三.ARP协议及ARP工作原理 四.TCP协议及常用端口号 五.UDP协议及常用端口号 一.IP数据包格式 网络 ...

最新文章

  1. R使用pROC和ggplot2包绘制ROC曲线
  2. 使用Lucene2.3构建搜索引擎
  3. php麻将机器人ai算法,高性能麻将AI算法
  4. 在Azure Cosmos DB里设置filter搜索记录
  5. 【nRF51822学习教程】SDK框架分析
  6. 提高mysql insert速度_让你的insert操作速度增加1000倍的方法
  7. 微信开发1之PHP成功获取微信支付的Token
  8. mysql语句修改zencart产品原价为特价的倍数
  9. python面向对象编程98讲_谈面向对象的编程(Python)
  10. 一拍是多少秒 计算机制音乐,E哥谈如何计算音乐的拍数及每拍时值是多少及数学好对学音乐有帮助吗?...
  11. Visual Studio的工程结构解析
  12. 山东济南站见面会完美收官
  13. python爬取股票历史数据_爬取股票历史数据并绘制K线图
  14. Java AES/ECB/PKCS5Padding加密和PHP解密的实现
  15. CMSC5724-数据挖掘之VC维、Shatter、VC-dim以及Margin有关的通理
  16. 2016 Multi-University Training Contest 2 1012 La Vie en rose (暴力)
  17. 修改服务器cimc地址,UCSC系列服务器的CIMC设置.PDF
  18. py处理网段转化模块
  19. poi 导出 word 表格样式
  20. usb gen1 gen2_什么是USB Gen 1,Gen 2和Gen 2×2?

热门文章

  1. 20191208_神经网络交叉验证
  2. python—装饰器@lru_cache在递归中的使用
  3. numpy-np.Inf
  4. 连载丨《极简设计:苹果崛起之道》——硅谷伊甸园(二)
  5. 对测试认识的三个阶段
  6. Scipy教程 - 统计函数库scipy.stats
  7. 推荐系统:参数协同过滤
  8. Sympy符号计算库
  9. sklearn学习笔记之preprocessing
  10. 【影像学基本知识】T1, T2 and PD weighted imaging