文档章节

17.TCP:传输控制协议

loda0128
 loda0128
发布于 07/21 19:42
字数 704
阅读 2
收藏 0

介绍

TCP和UDP使用同一网络层(IP),但TCP提供了面向连接、可靠的传输层服务

TCP传输给IP层的信息单位称为报文段或段

TCP通过如下方式保证可靠性:

  • 应用数据被分割成TCP认为最合适发送的数据块
  • TCP发送一个段后,会启动一个定时器等待目的端确认收到该段,否则重发
  • 当TCP接收端收到数据,会发送一个确认
  • TCP保持首部和数据校验和,接收端发现校验和有差错就丢弃报文段
  • TCP将对收到的数据重排序,保证顺序交给应用层
  • TCP接收端必须丢弃重复数据
  • TCP提供了流量控制,避免“快”主机压垮“慢”主机

TCP提供字节流传输服务,它交换的数据都是由字节(8位)构成

TCP不解释字节流内容,也就说它不知道传输的是二进制还是字符,这个内容由应用层解释

TCP首部

image_1ciu72du5f0t1pb61j6a1g2loab9.png-52.4kB

image_1ciu73n43111o8bolff15il1rh9m.png-100.5kB

由图可知,TCP首部最少5*4=20字节

  • 端口:通过TCP首部的源、目的端口,和IP首部的源、目的IP,可以唯一确定一个连接
  • 序号:下一字节数据的序号。每发送一字节数据,序号+1,到达2^31-1后置0
  • 确认序号:确认端期望接收下一字节的序号,值为上次成功接收数据序号+1
  • 首部长度:代表首部占了多少个32位,4位代表最多2^4=16个32位word,也就是64字节
  • 标志位:6个标志位
    • URG:紧急指针有效
    • ACK:确认序号有效
    • PSH:接收方应该尽快将这个报文段交给应用层
    • RST:重建连接
    • SYN:同步序号用来发起一个连接
    • FIN:发送端完成发送任务
  • 窗口大小:接收端期望接收的字节数,TCP基于该窗口大小进行流量控制
  • 校验和:覆盖TCP首部和TCP数据,发送端计算和存储,接收端验证
  • 紧急指针:代表一个正偏移,表示紧急数据的序号到哪结束。当URG=1该值才有意义,该偏移加上序号字段的值等于紧急数据最后一字节的序号
  • 选项:最常见选项为MSS,代表最长报文段大小

© 著作权归作者所有

共有 人打赏支持
loda0128
粉丝 93
博文 93
码字总数 118579
作品 0
朝阳
程序员
流媒体协议介绍(rtp/rtcp/rtsp/rtmp/mms/hls)

RTP 参考文档 RFC3550/RFC3551 Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。RTP协议常用...

Jerikc
2015/07/10
1K
2
视频直播之优化移动端WebRTC通信

序言 本文探讨范围仅限于移动端优化,android和iOS都适用。 惯例,先上介绍 官网介绍 WebRTC is a free, open project that provides browsers and mobile applications with Real-Time Com...

猫的天空之程
2016/10/23
0
0
android ------- TCP/IP

TCP/IP 是针对因特网的通信协议。 什么是 TCP/IP? TCP/IP 是供已连接因特网的计算机进行通信的通信协议。 TCP/IP 指传输控制协议/网际协议 (Transmission Control Protocol / Internet Prot...

切切歆语
04/20
0
0
Android第二十一天

一:TCP/IP协议 TCP/IP是一个协议族。 TCP:(Transmission Control Protocol)传输控制协议 IP:(Internet Protocol)互联网协议 四层网络体系结构:物理层(网络接口层)、互联网络层(包含I...

黄晓磊
2016/06/27
16
0
Wireshark的HTTP请求包和响应包如何对应

版权声明:欢迎转载,请注明出处,谢谢。 https://blog.csdn.net/boling_cavalry/article/details/82925463 以Wireshark2.6.3版本为例,如下图所示,红框中的803是一次HTTP的GET请求包,绿框...

博陵精骑
10/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

区块链入门教程以太坊源码分析ethdb源码分析

兄弟连区块链入门教程以太坊源码分析ethdb源码分析,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退...

兄弟连区块链入门教程
17分钟前
1
0
Eclipse下忽略掉node_modules目录相关配置

https://blog.csdn.net/yzf913214/article/details/72872523

张宏亮1982
18分钟前
1
0
在Python-dataframe中如何把出生日期转化为年龄?

我们在做数据挖掘项目或大数据竞赛时,如果个体是人的时候,获得的数据中可能有出生日期的Series,举个简单例子,比如这样的一些数: # -*- coding: utf-8 -*- import pandas as pd from ...

Mr_zebra
20分钟前
1
0
Android入门—activity生命周期

activity生命周期如下所示: onCreate()方法 创建activity时使用onStart()方法 当activity界面变为用户可见时调用onResume()方法 当activity界面获取到焦点时调用(界面按钮可点击,...

haoyuehong
22分钟前
1
0
使用C++ Builder 6编译产生错误

错误提示: [C++ Error] E2075 Incorrect project override option: Files\Borland\CBuilder6\lib\vcl60.csm[C++ Error] E2075 Incorrect project override option: Files\Borland\CBuilde......

simpower
25分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部