TCP协议,传输控制协议(英语:TransmissionControl Protocol,缩写为 TCP)是一种面向连接的、可靠的基于字节流的传输层通信协议,由IETF的RFC793定义。

tcp通信需要经过创建连接、数据传送、终止连接三个步骤。

可靠传输:

1)TCP采用发送应答机制

TCP发送的每个报文段都必须得到接收方的应答才认为这个TCP报文段传输成功

2)超时重传

发送端发出一个报文段之后就启动定时器,如果在定时时间内没有收到应答就重新发送这个报文段。

TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。

3)错误校验

TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

4) 流量控制和阻塞管理

流量控制用来避免主机发送得过快而使接收方来不及完全收下。

TCP与UDP的不同点

  • 面向连接(确认有创建三方交握,连接已创建才作传输。)
  • 有序数据传输
  • 重发丢失的数据包
  • 舍弃重复的数据包
  • 无差错的数据传输
  • 阻塞/流量控制

我们把tcp通信的报文称为段。

  1. 客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的段1。
    客户端发出段1,SYN位表示连接请求。序号是1000(实际是一个随机数,此处以1000为例),这个序号在网络通讯中用作临时的地址,每发一个数据字节,这个序号要加1,这样在接收端可以根据序号排出数据包的正确顺序,也可以发现丢包的情况。mss表示最大段尺寸,如果一个段太大,封装成帧后超过了链路层的最大帧长度,就必须在IP层分片,为了避免这种情况,客户端声明自己的最大段尺寸,建议服务器端发来的段不要超过这个长度。
  1. 服务器端回应客户端,是三次握手中的第2个报文段,同时带ACK标志和SYN标志。它表示对刚才客户端SYN的回应;同时又发送SYN给客户端,询问客户端是否准备好进行数据通讯。
    服务器发出段2,也带有SYN位,同时置ACK位表示确认,确认序号是1001,表示“我接收到序号1000及其以前所有的段,请你下次发送序号为1001的段”,也就是应答了客户端的连接请求,同时也给客户端发出一个连接请求SYN,序号是8000(实际也是一个随机数,此处以8000为例),同时声明最大尺寸为1024。
  1. 客户必须再次回应服务器端一个ACK报文,这是报文段3。客户端发出段3,对服务器的连接请求进行应答,确认序号是8001。

在这个过程中,客户端和服务器分别给对方发了连接请求,也应答了对方的连接请求,其中服务器的请求和应答在一个段中发出,因此一共有三个段用于建立连接,称为“三次握手(three-way-handshake)”。在建立连接的同时,双方协商了一些信息,例如双方发送序号的初始值、最大段尺寸等。

在TCP通讯中,如果一方收到另一方发来的段,读出其中的目的端口号,发现本机并没有任何进程使用这个端口,就会应答一个包含RST位的段给另一方。例如,服务器并没有任何进程使用8080端口,我们却用telnet客户端去连接它,服务器收到客户端发来的SYN段就会应答一个RST段,客户端的telnet程序收到RST段后报告错误Connectionrefused。

TCP协议以及三次握手相关推荐

  1. TCP协议的三次握手与四次挥手

    tcp协议的三次握手和四次挥手 三次握手: 第一次握手: 客户端发起一个链接(SYN) 第二次握手: 服务端就会返回一条(ACK)确认信息,同时服务端也会向客户端发起一个链接请求(SYN),此二者可合 ...

  2. TCP协议中三次握手

    TCP/IP是互联网相关的各类协议族的总称 TCP/IP协议族分为:应用层,传输层,网络层,数据链路层 应用层:向用户提供应用服务时的通讯的活动 传输层:提供处于网络连接中的两台计算机之间的数据传输 ...

  3. 用wireshark抓包分析TCP协议的三次握手连接、四次握手断开

    用wireshark抓包分析TCP协议的三次握手连接.四次握手断开 一.TCP三次握手图解 二.TCP得四次挥手过程 三.用Fiddler抓包,分析验证一个HTTPS网站的TCP连接过程 一.TCP三 ...

  4. TCP协议的三次握手和四次挥手

    转自:http://uule.iteye.com/blog/2213562 TCP协议的三次握手和四次挥手 博客分类: http/tcp TCP/IP协议三次握手与四次握手流程解析 Http协议三次握 ...

  5. TCP协议及三次握手的过程

    在这里插入代码片@TOC TCP协议以及三次握手 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 TCP协议以及三次握手 1.TCP协议是什么? 2.TCP协议的作用 3. ...

  6. 计算机网络【UDP与TCP协议(三次握手、四次挥手)】

    计算机网络[UDP与TCP协议(三次握手.四次挥手)]

  7. TCP 协议的三次握手、四次分手

    详细描述了 TCP 协议的连接和关闭的整个过程.解释了为什么 TCP 协议是面向连接的.可靠的数据传输协议. TCP 在互联网上之间的通信交流,一般是基于 TCP (Transmission Cont ...

  8. 通俗大白话来理解TCP协议的三次握手和四次分手

    最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最近看了很多这方面的知识,也在系统的学习计算机网络,加深自己的CS功底,就把看过的一些比较好 ...

  9. JavaSE(二十二)——TCP协议的三次握手

    文章目录 1. TCP协议 2. TCP的三次握手 3. 为什么一定是三次握手? 1. TCP协议 TCP协议:传输控制协议,是可靠连接,类似于打电话,只有等待对方接通的时候才可以交流,也就是确认了对 ...

  10. TCP协议的三次握手、四次挥手

    TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,通过三次握手建立一个连接 TCP 三次握手图示: 位码即tc ...

最新文章

  1. webp、jpeg、png三种压缩算法比较
  2. nginx+keepalived高可用及双主模式
  3. 查询局域网内在线电脑IP
  4. SparkContext解析
  5. HarmonyOS分布式软总线研究,【钟洪发老师公开课】实战学习HarmonyOS重点之分布式软总线...
  6. 谈谈App的混合开发
  7. 解刨一台计算机,解剖一台计算机.doc
  8. 解决 npm 无法安装 devDependencies 下的依赖包的问题
  9. 解析Excel_Poi
  10. 直播教程 || 虚拟直播设备清单分享,建议收藏~
  11. 苹果自带的清理软件_苹果电脑系统垃圾清理软件
  12. 利用栈实现中缀表达式转后缀表达式
  13. 每日3词 2021-03-08 【reference】【print】【coding】
  14. 计算机代码画玫瑰,如何用代码画一朵玫瑰花
  15. incsgo 可直接取回最好的国内CSGO饰品皮肤开箱网站
  16. 如何在素材中心中下载字体并安装?
  17. 班级页面设计——【2-主界面部分】
  18. 51单片机学习笔记(清翔版)(19)——串口通信
  19. C语言中?:代表什么意思
  20. 用python画竹子_智慧职教moocPython程序设计基础期末考试查题公众号答案

热门文章

  1. mysqlslap详解--MySQL自带的性能压力测试工具(转)
  2. 安装rlwrap 的简单方法
  3. redis -- 学习
  4. FineUI(专业版)v3.0.0 发布,手机、平板和桌面全支持!
  5. IOS_改变UITextField placeHolder颜色、字体
  6. windows phone7 学习笔记14——地理位置服务与反应性扩展框架
  7. rtp 实时传输协议
  8. Presto基本概念
  9. 理解zookeeper选举机制
  10. memcpy执行效率测试,无效测试