TCP(Transmission Control Protocol,传输控制协议),位于传输层,提供一种面向连接、可靠的字节流服务。

字节流服务(Byte Stream Service)是指,为了方便传输,将大 块数据分割成以报文段(segment)为单位的数据包进行管理。

可靠的传输服务是指,能够把数据准确可靠地传给对方。

面向连接

两个使用TCP的应用(C/S ),彼此交换数据之前必须建立一个TCP连接。

1、建立TCP连接(三次握手)

(1)请求端(C)发送一个SYN段表明准备连接服务器(S)端口,以及初始序号(ISN,图中的100,本人随意取得值),即报文段1。

(2)服务器发回包含服务器的初始序号的SYN段(报文段2)作为应答。同时,将确认序号设置为请求端的ISN加1,以对请求端的SYN段进行确认。一个SYN占用一个序号。

(3)请求端将确认序号设置为服务器的ISN加1,以对服务器的SYN段进行确认(报文段3)。连接建立。

2、终止TCP连接(四次挥手)

(1)客户端主动发起终止连接请求(FIN),即报文段4,用来关闭客户端到服务端的数据传送。

(2)服务端收到这个FIN,发回一个ACK,确认序号为收到的序号加1,即报文段5。同时,TCP服务器向应用程序发送一个文件结束符(EOF)。

(3)服务器关闭连接,发送一个FIN给客户端,即报文6。

(4)客户端收到服务端发送的FIN,需要发送一个确认,将确认序号设置为收到的序号加1,即报文7。到这里,两个方向的连接都已关闭。

读《TCP/IP详解》:TCP的更多相关文章

  1. TCP/IP详解--TCP连接中TIME_WAIT状态过多

    TIMEWAIT状态本身和应用层的客户端或者服务器是没有关系的.仅仅是主动关闭的一方,在使用FIN|ACK|FIN|ACK四分组正常关闭TCP连接的时候会出现这个TIMEWAIT.服务器在处理客户端请 ...

  2. TCP/IP详解--TCP首部选项中时间戳选项

    一.简介 TCP时间戳选项会在TCP包头增加12个字节,以一种比重发超时更精确的方法来启用对RTT 的计算.   二.作用 ) TCP时间戳位于TCP选项中,kind=:lenth=:data由tim ...

  3. TCP/IP详解 (转)

    TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中 ...

  4. TCP/IP详解--发送ACK和RST的场景

    在有以下几种情景,TCP会把ack包发出去: 1.收到1个包,启动200ms定时器,等到200ms的定时器到点了(第二个包没来),于是对这个包的确认ack被发送.这叫做“延迟发送”: 2.收到1个包, ...

  5. TCP/IP详解--连接状态变迁图CLOSE_WAIT

    终止一个连接要经过4次握手.这由TCP的半关闭(half-close)造成的.既然一个TCP连接是全双工(即数据在两个方向上能同时传递,可理解为两个方向相反的独立通道),因此每个方向必须单独地进行关闭 ...

  6. TCP IP详解(转)

    大学学习网络基础的时候老师讲过,网络由下往上分为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 网络七层协议简称OSI.TCP/IP刨除了物理层,并把上三层(会话层.表示层和应用层)统称 ...

  7. TCP/IP详解学习笔记(9)-TCP协议概述

    终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...

  8. TCP/IP详解学习笔记 这位仁兄写得太好了

      TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣 ...

  9. TCP/IP详解学习笔记 这位仁兄写得太好了.(转载)

    TCP/IP详解学习笔记   这位仁兄写得太好了   TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/20444 ...

  10. 【转】TCP/IP详解学习笔记(二)

    TCP/IP详解学习笔记(5)-IP选路,动态选路,和一些细节 1.静态IP选路 1.1.一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据 ...

随机推荐

  1. [转]Redis之(一)初识Redis

    原文地址:http://blog.csdn.net/u012152619/article/details/52550315 Redis之(一)初识Redis 标签: Redisredis-server ...

  2. [PHP] CentOS下搭建下PHP的运行环境

    在公司里面有分配的测试机,所有的开发代码都运行在测试机里面.因为公司的测试机机房退租,所以要在新申请的几台测试机上搭建开发环境.开发环境尽量做到和线上的环境一致,包括代码的目录路径,运行程序的进程用户 ...

  3. Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the serv

    z 此问题为时区问题,在 JDBC 的连接 url 部分加上 useSSL=true&serverTimezone=UTC 即可.如图

  4. Ubuntu18.04 安装TensorFlow 和 Keras

    TensorFlow和Keras是当前两款主流的深度学习框架,Keras被采纳为TensorFlow的高级API,平时做深度学习任务,可以使用Keras作为深度学习框架,并用TensorFlow作为后 ...

  5. selenium的web自动化实战

    selenium自动化原理: 1.通过各种语言(python,java,ruby等)调用接口库 2.通过浏览器驱动(web driver)来驱动浏览器 利用Python自动化的环境安装: 1.pyth ...

  6. 修改Tooltip 文字提示 的背景色 箭头颜色

    3==>vue 鼠标右击<div @contextmenu.prevent="mouseRightClick">prevent是阻止鼠标的默认事件 4==> ...

  7. 201271050130-滕江南《面向对象程序设计(java)》第十周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  8. 解决飞秋绑定TCP错误

    电脑不能打开网页,局域网的飞秋不能运行:提示TCP/IP错误,错误事件代码:10106.重装TCP/IP协议后就OK了…… 步骤如下:1.删除这两个注册表选项:(打开注册表命令regedit.如果不能 ...

  9. luoguP2480 [SDOI2010]古代猪文

    题意 考虑所求即为:\(G^{\sum\limits_{d|n}C_n^d}\%999911659\). 发现系数很大,先用欧拉定理化简系数:\(G^{\sum\limits_{d|n}C_n^d\% ...

  10. 群体遗传之ped格式

    1.PED简介 PED文件格式是广泛使用的用于连锁系谱数据分析的格式,并用作plink程序的输入.PLINK是一个免费的,开源的全基因组关联分析工集,旨在以高计算效率的方式执行一系列基本的,大规模的分 ...