文档章节

17.TCP:传输控制协议

loda0128
 loda0128
发布于 07/21 19:42
字数 704
阅读 1
收藏 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
粉丝 91
博文 92
码字总数 118080
作品 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
TCP/IP协议(一)

一、TCP/IP 的由来 计算机需要互联,需要一个通信协议。 TCP:传输控制协议。 IP:网络协议。 TCP/IP是一个协议族的统称,包括IP协议、ICMP协议、TCP协议、以及http、ftp、pop3等。 二、TCP...

不是simaguo
2016/12/24
9
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

nginx模块学习六 add_header 跨域访问

语法 Syntax: add_header name value [always];Default: --Context:http,server,location,if in location 例:/etc/nginx/conf.d/default.conf server {    listen       80; ......

Romanceling
今天
0
0
SpringBoot初探

#SpringBoot初探 三种创建SpringBoot项目的方式: 第一种:使用IDEA创建maven项目,选择maven-archetype-quickstart; 第二种:使用IDEA创建Spring Initializer,选择web组件; 第三种:使用...

向码而生
今天
2
0
IO

JAVA中IO技术:BIO、NIO、AIO 1、同步异步、阻塞非阻塞概念 同步和异步是针对应用程序和内核的交互而言的。 阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方...

DemonsI
今天
0
0
org.apache.commons 常用工具类

一. org.apache.commons.io.IOUtils closeQuietly 关闭一个IO流、socket、或者selector且不抛出异常。通常放在finally块。 toString 转换IO流、 Uri、 byte[]为String。 copy IO流数据复制,...

sprouting
今天
0
0
linux使用Inotify监控目录或者文件状态变更

基本概念: Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。 需求: 1.有一个文件采集进程,...

mickelfeng
今天
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部