Transmission Control Protocol (TCP)

用于网络通信的传输控制和网络协议套件,包括很多协议,其中最主要的是TCP和IP协议。TCP/IP属于UNIX类系统的内置协议,被广泛应用于网络通信,并且已然成为网络传输的标准。即使是对于拥有专有网络协议的网络操作系统,如Netware。IP协议用于处理数据包,TCP则主要用于网络连接的建立及数据的传输,保障数据包的的可靠传输及传输顺序。

作为IP协议的补充,TCP通过提供可靠的,流式传输的连接,协议弥补了IP协议的很多不足。并且作为IP协议层的下一层,为IP提供了很多功能支持:

  • 流式传输:TCP字节流的形式传输数据,或者说更像一个文件的形式,代替原有的网络数据报形式的传输。
  • 可靠传输:头信息中的序号字段用于保障数据的传输及接收,在确认数据丢失的情况下,TCP协议会启动数据的重新传输。
  • 网络自适应:TCP会根据网络状况,动态的进行传输控制,以在不影响网络的情况下,达到最大吞吐。
  • 流控制:TCP负责管理数据缓冲区,协调处理网络冲突以避免缓冲区溢出。如TCP会间隔的暂停传输比较快发送方以适应接收数据较慢的接收方。

TCP基本的操作包括:

  • 将高层的应用数据包装为一个个数据段。
  • 将数据段包装到IP数据包
  • 绑定特殊的应用端口
  • 每个传输的字节都有对应的序列号
  • 用于建立及关闭连接的特殊数据包
  • 通过确认及超时以保障数据传输的完整性。

TCP数据分段基于32 bit words,包括20字节(5 word)头信息:

  • 源端口号:端口号用于确定数据需要发送,接收的具体应用。不同的端口号应用,也使得不同网络主机间可以同时发送,接收多个数据包到不同的应用。TCP数据流可以通过源地址,源端口,目标地址,目标端口唯一的确定应用传输。
  • 目标端口号:TCP数据传输目标应用
  • 序号:32位数据用于标识当前需要传输数据的第一个字节号
  • 确认序号:32位数据,用以标识发送端期望收到的数据起始序号,接收端可以通过此序号,确定 确认序号-1 的数据都已接收,本地副本可以丢弃。
  • 头信息长度:4字节的头信息长度
  • 标志位:6位标志位用以标识传输数据的类型及状态,部分标志位可以同时使用
  • 校验数据
  • 流控制:流控制是通过数据序号进行控制的,发送序号及确认序号。

序号

32位序号用以标识TCP传输的数据数。每个TCP数据包包含一个标识第一个需要传输的字节的序号及最后一个被远端主机接收的数据序号(确认序号),发送及接收端都需要跟踪这两个序号以保障数据的可靠传输。

TCP使用一些标志位以管理传输,一些标志位可以单独使用,但是对于用于建立及关闭连接,需要可靠传输的SYN、FIN标志位则要结合序号信息。

连接建立

TCP通过三次握手建立连接。在通常的客户端,服务器模式中,连接通常由活跃的客户端主动发起,服务端主动回应。服务端需要时刻处于监听状态,以便能够及时处理新的连接请求。

三次握手连接:

  • 客户端发送SYN数据包,包含序号信息(随机值J)
  • 接收端收到数据后,SYN数据包,包含序号(随机数k),确认序号(J+1)。
  • 客户端接收到SYN信息后,发送ACK数据包,包含确认序号(k+1)

随机值每4s递增1,以避免数据包序号混淆。

连接关闭

有序的关闭一个TCP连接需要4此数据交换,主动关闭的一端发送FIN关闭数据包,接收端接收到FIN数据包会通知应用程序关闭此次连接。

关闭的双方发送的数据交换为两次独立的数据交换,关闭可以是单方向的,也就是说一方关闭了,两一方也还可以继续接收数据。这就是所谓的半关闭。RFC793定义了MSL(最大生存时间),如果在MSL时间内,数据包不能到达,那么则认定数据包丢失。

RTT预估

主机进行数据传输时,获取确认需要等待一段时间,如果在特定时间内没有收到回复,那么数据会被认定丢失,然后,会进行数据重发,

... ...

传输控制协议--- Transmission Control Protocol (TCP)的更多相关文章

  1. TCP之一:传输控制协议(Transmission Control Protocol, TCP)

    TCP协议主为了在主机间实现高可靠性的包交换传输协议.本文将描述协议标准和实现的一些方法.因为计算机网络在现代社会中已经是不可缺少的了,TCP协议主要在网络不可靠的时候完成通信,对军方可能特别有用,但 ...

  2. TCP(Transmission Control Protocol)学习笔记

    一.TCP(Transmission Control Protocol)原理介绍(参考维基百科) TCP连接包括三种状态:连接建立.数据传送和连接终止. TCP用三路握手(three-way hand ...

  3. Internet History,Technology,and Security -Transport Control Protocol(TCP)(Week6)

    Week6 Technology: Transport Control Protocol(TCP) Welcome to Week 6 of IHTS. We are in our second we ...

  4. java基础 UDP通信 user datagram protocol 用户数据豆协议 TCP transmission control protocol 传输控制协议 多线程TCP

    无连接通信 UDP 客户端 package com.swift.test; import java.io.IOException; import java.net.DatagramPacket; im ...

  5. Internet History, Technology, and Security(week6)——Technology: Transport Control Protocol(TCP)

    前言: 这周开始学习分层网络模型的第三层,传输层. Transport/Reliability: Transport Layer TCP层的目的是补偿IP层中可能出现的错误,并充分利用可用资源.由于I ...

  6. 传输控制协议(TCP) -- 连接建立及终止过程

    TCP简介 相对于不可靠.无连接的用户数据报协议(User Datagram Protocol, UDP),传输控制协议(Transmission Control Protocol, TCP)是可靠的 ...

  7. TCP(传输控制协议)和三次握手和四次断开

    TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机网络OSI模型中, ...

  8. TCP/IP 中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议

    原文地址:http://hi.baidu.com/albyuyrgqgbbhoq/item/65006d2d002ab33195f62ba1 TCP/IP(Transmission Control P ...

  9. 【RL-TCPnet网络教程】第12章 TCP传输控制协议基础知识

    第12章      TCP传输控制协议基础知识 本章节为大家讲解TCP(Transmission Control Protocol,传输控制协议),通过本章节的学习,需要大家对TCP有个基本的认识,方 ...

随机推荐

  1. 新锤子驾到,通通闪开—Service Mesh

    微服务方兴未艾如火如荼之际,除 Spring cloud 等经典框架之外,新一代的微服务开发技术正在悄然兴起,那就是Service Mesh(服务网格).2018 年是Service Mesh 元年, ...

  2. Mina使用总结(一)MinaServer

    我们先看一个最简单的Mina Server服务端代码,该段代码实现了服务端Server启动并监听客户端请求 package com.bypay.mina.server; import java.io. ...

  3. No Spring WebApplicationInitializer types detected on classpath异常的解决

    1.问题描述,当配置成 时,通过地址栏访问默认路径的index.jsp报404错误,如果手动在浏览器输入“http://localhost:8080/index.jsp”,则出现源码文件,然后观察ec ...

  4. P3558 [POI2013]BAJ-Bytecomputer

    题目描述 A sequence of integers is given. The bytecomputer is a device that allows the following operati ...

  5. luogu P4199 万径人踪灭

    嘟嘟嘟 方案:回文子序列数 - 回文子串数. 回文子串数用manacher解决就行了,关键是怎么求会问序列数. 一个比较好的\(O(n ^ 2)\)的算法:对于一个回文中心\(i\),\(O(n)\) ...

  6. jenkins+pytest+ allure运行多个py文件测试用例

    jenkins的pytest运行多个py文件,导出allure报告方法,只需改下job的配置中的构建即可(pytest会运行指定文件下的所有test开头的py文件),如下:              ...

  7. PAT乙级1033

    1033 旧键盘打字 (20 分)   旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在 2 ...

  8. GoodUserInterface 模仿页面功能

    模仿一些好的应用中的好的界面或功能.平时使用的APP有很多,其中一些都是常见的功能的拼凑,在业务层面比较复杂,而具体的页面实现都很类似.在这种情况下,我们还会发现有一些APP的页面效果的实现方式比较独 ...

  9. 基于vue-cli3和追书神器制作的移动端小说阅读网站,附接口和源码

    项目简介 基于node express+mysql+vue-cli3和追书神器接口制作的移动端小说阅读网站,**仅供参考学习!不用于任何商业用途!** 闲暇时间用vue练练手,就想写个小说网站来看看, ...

  10. Hadoop系列-zookeeper基础

    目前是刚刚初学完zookeeper,这篇文章主要是简单的对一些基本的概念进行梳理强化. zookeeper基础概念的理解 有时候计算机领域很多名词都是从一长串英文提取首字母缩写而来,但很不幸zooke ...