博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP协议概述
阅读量:2429 次
发布时间:2019-05-10

本文共 1045 字,大约阅读时间需要 3 分钟。

概述

这里写图片描述

TCP(TRANSMISSION CONTROL PROTOCOL,即传输控制协议),它位于TCP/IP协议簇中的传输层。可以不夸张的说它是当今网络中使用得最为广泛的协议。与 UDP不同,TCP 提供了一种 面向连接(connection-oriented) 的、可靠的字节流服务。“面向连接”,是指使用 TCP 的两个应用程序 必须在它们可以交换数据之前,通过相互联系建立起一个 TCP 连接。建立起连接的两端称为两个端点(endpoint) 。因为 TCP 是面向连接的,所以没有广播和组播这样的概念。“可靠的字节流服务”是指TCP传输的数据会保证安全送达,不会出现丢包,乱序等问题,字节流则是指应用程序可以将任意大小的数据交给 TCP而不用关心如何发送。

TCP头部

一个 TCP 块包含了 TCP头和应用程序数据,称之为 报文段(segment) 。

TCP头的格式如下:

这里写图片描述

字段解释:

1. 源端口(source port)

2个字节,表示发送该报文的应用程序端口号,最大为65535。

2. 目的端口(destination port)

2个字节,表示接收该报文的应用程序端口号,最大为65535。

3. 序列号(sequence number)

4个字节,定义了指派给本报文段第一个数据字节的编号。

4. 确认号(acknowledgment number)

4个字节,定义了报文段的接收方期望从对方接收的字节编码。

5. 头部长度(data offset)

4个bit位,TCP头的实际长度 = data offset >> 2。因此TCP头的最大长度是60字节(options最大长度为40字节),不包含options的TCP头为20字节。

6. 保留位(reserved)

6个bit位,保留备用,必须都为0。

7. 标志位()

6个bit位。

  • URG:紧急指针
  • ACK:确认序号有效
  • PSH:接收方应该尽快将这个报文段交给应用层
  • RST:重建连接
  • SYN:建立连接
  • FIN:关闭连接

8. 窗口大小(window size)

2个字节,窗口大小主要用于流量控制,后面会讲解原理。

9. TCP校验和(checksum)

2个字节,校验和覆盖了整个的TCP报文段:TCP首部和TCP数据。

10. 紧急指针(urgent pointer)

2个字节,只有URG标志置为1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。

你可能感兴趣的文章
Java IO 以及 NIO 详解
查看>>
Java 反射和动态代理真的没那么高深,一起来看看就知道了
查看>>
java线程与死锁问题,讲的太详细太好懂了,再也不用怕了
查看>>
chinaunix
查看>>
Lucky
查看>>
ERP100 論壇,ORACLE ERP
查看>>
ORA-600
查看>>
不止 5G 和鸿蒙,华为最新大招,扔出 AI 计算核弹
查看>>
【早报】做Java半年,挣的不如AI 1个月?第二句泪目..
查看>>
反转!2019程序员吸金榜来了,AI程序员刷爆了..
查看>>
学Python后到底能干什么?网友:我太难了
查看>>
华为、BAT力捧!程序员:我彻底慌了...
查看>>
刷爆了!BAT这场AI芯片之战,你更支持谁?
查看>>
定了!刚面完AI岗位,这些题全都考了!程序员:有黑幕!
查看>>
GitHub 热榜第一!这个 Python 项目超 8.4k 标星,网友:太实用!
查看>>
阿里云部署Django项目(nginx+uWSGI)
查看>>
程序员必看,这本深度学习宝典刷爆IT圈!
查看>>
python学习心得体会(一)
查看>>
程序员薅羊毛神器来了!
查看>>
自学 Python后,自己一个人可以通过此技能挣什么钱?
查看>>