TCP怎么判断包结束

KangRoger 2014-07-23 01:41:17
TCP是面向字节流的,收发双向都不知道包长度,那么怎么判断包的结束标志呢?
...全文
1415 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
勤奋的小游侠 2014-08-05
  • 打赏
  • 举报
回复
引用 6 楼 KangRoger 的回复:
[quote=引用 5 楼 lovesmiles 的回复:] [quote=引用 4 楼 KangRoger 的回复:] [quote=引用 3 楼 lovesmiles 的回复:] [quote=引用 2 楼 KangRoger 的回复:] [quote=引用 1 楼 lovesmiles 的回复:] 收发双方定义一个包头. TLV格式 T=tag,L=length,V=value 其中的L字段指明了包的长度。 或者用结束符,某个特定的值表示包的结束。
那这个就是在应用层了,在运输层,TCP怎么判断包的结尾的呢?[/quote] 在传输层的包是定长的啊,在建立TCP链接时,双方就已经协商好TCP包的长度了。所以在IP层和TCP层的帧都是固定长度的。[/quote] TCP发送数据的长度是变化的吧?拥塞避免、慢启动不都是说明TCP的包长度在变化吗[/quote] 不是,拥塞避免、慢启动都是说发送和接收窗口的变化,是以包为最小单位的。 MSS才是包的长度,只在发送SYN帧,即建立连接的时候双方协商确定。以双方最小的MSS为通信TCP包的长度。如果SYN没有定义 MSS这个长度,则默认为536byte.[/quote] 那就是在协商好MSS这个包长度后,在通信过程中TCP的包长度不再变化?[/quote] 是的,连接一旦建立,包长就不会变化。
KangRoger 2014-08-05
  • 打赏
  • 举报
回复
引用 5 楼 lovesmiles 的回复:
[quote=引用 4 楼 KangRoger 的回复:] [quote=引用 3 楼 lovesmiles 的回复:] [quote=引用 2 楼 KangRoger 的回复:] [quote=引用 1 楼 lovesmiles 的回复:] 收发双方定义一个包头. TLV格式 T=tag,L=length,V=value 其中的L字段指明了包的长度。 或者用结束符,某个特定的值表示包的结束。
那这个就是在应用层了,在运输层,TCP怎么判断包的结尾的呢?[/quote] 在传输层的包是定长的啊,在建立TCP链接时,双方就已经协商好TCP包的长度了。所以在IP层和TCP层的帧都是固定长度的。[/quote] TCP发送数据的长度是变化的吧?拥塞避免、慢启动不都是说明TCP的包长度在变化吗[/quote] 不是,拥塞避免、慢启动都是说发送和接收窗口的变化,是以包为最小单位的。 MSS才是包的长度,只在发送SYN帧,即建立连接的时候双方协商确定。以双方最小的MSS为通信TCP包的长度。如果SYN没有定义 MSS这个长度,则默认为536byte.[/quote] 那就是在协商好MSS这个包长度后,在通信过程中TCP的包长度不再变化?
勤奋的小游侠 2014-08-04
  • 打赏
  • 举报
回复
引用 4 楼 KangRoger 的回复:
[quote=引用 3 楼 lovesmiles 的回复:] [quote=引用 2 楼 KangRoger 的回复:] [quote=引用 1 楼 lovesmiles 的回复:] 收发双方定义一个包头. TLV格式 T=tag,L=length,V=value 其中的L字段指明了包的长度。 或者用结束符,某个特定的值表示包的结束。
那这个就是在应用层了,在运输层,TCP怎么判断包的结尾的呢?[/quote] 在传输层的包是定长的啊,在建立TCP链接时,双方就已经协商好TCP包的长度了。所以在IP层和TCP层的帧都是固定长度的。[/quote] TCP发送数据的长度是变化的吧?拥塞避免、慢启动不都是说明TCP的包长度在变化吗[/quote] 不是,拥塞避免、慢启动都是说发送和接收窗口的变化,是以包为最小单位的。 MSS才是包的长度,只在发送SYN帧,即建立连接的时候双方协商确定。以双方最小的MSS为通信TCP包的长度。如果SYN没有定义 MSS这个长度,则默认为536byte.
KangRoger 2014-07-28
  • 打赏
  • 举报
回复
引用 3 楼 lovesmiles 的回复:
[quote=引用 2 楼 KangRoger 的回复:] [quote=引用 1 楼 lovesmiles 的回复:] 收发双方定义一个包头. TLV格式 T=tag,L=length,V=value 其中的L字段指明了包的长度。 或者用结束符,某个特定的值表示包的结束。
那这个就是在应用层了,在运输层,TCP怎么判断包的结尾的呢?[/quote] 在传输层的包是定长的啊,在建立TCP链接时,双方就已经协商好TCP包的长度了。所以在IP层和TCP层的帧都是固定长度的。[/quote] TCP发送数据的长度是变化的吧?拥塞避免、慢启动不都是说明TCP的包长度在变化吗
KangRoger 2014-07-27
  • 打赏
  • 举报
回复
引用 1 楼 lovesmiles 的回复:
收发双方定义一个包头. TLV格式 T=tag,L=length,V=value 其中的L字段指明了包的长度。 或者用结束符,某个特定的值表示包的结束。
那这个就是在应用层了,在运输层,TCP怎么判断包的结尾的呢?
勤奋的小游侠 2014-07-27
  • 打赏
  • 举报
回复
引用 2 楼 KangRoger 的回复:
[quote=引用 1 楼 lovesmiles 的回复:] 收发双方定义一个包头. TLV格式 T=tag,L=length,V=value 其中的L字段指明了包的长度。 或者用结束符,某个特定的值表示包的结束。
那这个就是在应用层了,在运输层,TCP怎么判断包的结尾的呢?[/quote] 在传输层的包是定长的啊,在建立TCP链接时,双方就已经协商好TCP包的长度了。所以在IP层和TCP层的帧都是固定长度的。
勤奋的小游侠 2014-07-26
  • 打赏
  • 举报
回复
收发双方定义一个包头. TLV格式 T=tag,L=length,V=value 其中的L字段指明了包的长度。 或者用结束符,某个特定的值表示包的结束。

4,358

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧