TCP/IP详解(一)

TCP(Transmission Control Protocol, 传输控制协议)

TCP协议: 在IP协议之上,解决网络通讯可依赖问题

TCP: 面向连接的, 可靠的, 基于字节流的传输层通信协议.
面向连接: 一对一的,点对点的连接. 是指使用TCP的两个应用程序必须在他们可交换数据之前, 通过相互联系 (三次握手)来建立一个TCP连接
可靠的: TCP能保证一个报文最终都能到达接收端
基于字节流: 表示我们的消息是没有边界的, 无论消息有多大, 都可以进行传输. 其次, 基于字节流是一个有序的,当前一个字节接收端没有收到的话, 先收到了后一个字节, 也不能传输给应用程序处理

TCP所解决的问题:如何把一个报文 按照顺序, 可靠的发送给对端.

TCP的以上功能都是通过TCP头部实现的, 接下来看看TCP头部的内容.

TCP头部

在这里插入图片描述

上图为TCP报文段.在不带选项的情况下, 大小为20字节. 如果帯上选项的话, 最大可达到60字节.

字段作用
源端口和目的端口源端口和目的端口和源IP和目的IP组成一个四元组. 唯一的表示了每一个连接
序列号标识了TCP发送端到TCP接收端的数据流的一个字节,该字节代表着该序列号的报文段的数据中的第一个字节
确认号(ACK)该确认号的发送方期待接受下一个序列号
头部长度TCP头部的长度, 以32位字为单位.因为选项字段的长度不定, 所以需要指名这个头部的大小
CWR拥塞窗口减(发送方降低它的发送速率)
ECEECN回显(发送发接收到了一个更早的拥塞通告)
URG紧急(紧急指针字段有效)
ACK确认(确认号字段有效, 连接建立以后一般都是启用状态)
PSH推送(接收方应该尽快给应用程序传送这个数据)
RST重置连接(连接取消,经常是因为错误)
SYN用于初始化一个连接同步序列号
FIN该报文段的发送方已经结束向对方发送数据
TCP校验和这个字段是强制的,由发送方进行计算和保存, 然后由接收方验证
紧急指针只有URG位字段被设置时才有效.这个指针是一个必须要加到报文段的序列号字段上的正偏移

TCP协议的主要任务

  1. 主机内的进程寻址 --基于端口
  2. 创建, 管理, 终止连接
  3. 处理并将字节(8 bit)流打包成报文段(segment)
  4. 传输数据
  5. 保持可靠性与传输质量
  6. 流量控制与拥塞控制
  • 流量控制: 面向于接收方和发送方两端, 防止两端处理数据不匹配
  • 拥塞控制: 面向与整个网络, 防止网络出现恶性拥塞

TCP的可靠性的保证

  1. 在TCP层中, TCP把应用程序的数据分散为TCP认为最佳大小的segment来发送. 有TCP传给IP的segment被称为报文段.

  2. TCP的校验和字段: 它用于检测传送中引入的比特差错, 如果一个帯无效校验和的报文段到达, 那么TCP会丢失它, 并且不发送ACK确认号, 使这个错误的包重新传送.

  3. 重传计时器: TCP会为一组数据设置一个计时器, 发送一个窗口的数据 被称为 一组. 如果有一个确认没有及时收到, 这个报文段就会被重传.

  4. 序列号: 一个TCP接收端可丢弃重复的报文段和记录以杂乱次序到达的报文段. 因为TCP使用IP来传递它的报文段, IP不提供消除或保证次序正确的功能. 但是, TCP是一个字节流协议, TCP绝不会以杂乱的次序给接收应用程序发送数据. 所以, TCP接收端可能会先保持大序列号的数据不交给应用程序, 直到确实的小序列号的报文段到达.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值