关于tcp的知识记录
1. 概念
TCP(Transmission Control Protocol,传输控制协议),是一种面向连接的,可靠地,基于字节流的传输层通信协议。当应用层向TCP层发送用于网络间传输的用8位字节表示的数据流时,TCP则把数据流分割成适当长度的报文段,最大传输段大小(MSS)通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)限制
2. 特性
有序性:为每个数据包编排序号,是接收端能够判断先后到达的次序混乱的数据包的原本顺序
正确性:TCP用一个checksum函数来检验数据是否有错误,在发送和接收时都要计算校验和,这使得接收端能够判断数据是否在传输过程中被破坏
可靠性:发送端采用超时重传并有确认机制识别错误或丢失数据,进行重发
可控性:接收端和发送端的网络质量通常不同,TCP采用滑动窗口协议和拥塞控制算法是数据的发送速度达到合理值
3. 三次握手
建立连接时,客户端发送SYN包到服务器,并进入SYN_SENT状态,等待服务器确认
服务器收到SYN包,反馈给客户端一个SYN+ACK包,此时服务器进入SYN_RECV状态
客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,客户单和服务器同时进入ESTABLISHED(TCP连接成功)状态,完成三次握手
4. 四次关闭连接
关闭请求方向另一方发送一个带有FIN附加标记的报文段
接收方 收到这个FIN报文段之后,并不立即用FIN报文段回复,而是先向发送方 发送一个确认序号ACK,通知通知自己的相应的应用程序:对方要求关闭连接,使应用程序做相应的清理工作
接收方的应用程序清理工作完成后,向 发送方发送一个FIN报文段
发送方 收到这个FIN报文段之后,向接收方发送一个ACK,表示连接彻底释放
关于tcp的知识记录的更多相关文章
- C#基础知识记录一
C#基础知识记录一 static void Main(string[] args) { #region 合并运算符的使用(合并运算符??) 更多运算符请参考:https://msdn.microsof ...
- DataBase MongoDB基础知识记录
MongoDB基础知识记录 一.概念: 讲mongdb就必须提一下nosql,因为mongdb是nosql的代表作: NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型 ...
- MongoDB基础知识记录
MongoDB基础知识记录 一.概念: 讲mongdb就必须提一下nosql,因为mongdb是nosql的代表作: NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型 ...
- Web前端理论知识记录
Web前端理论知识记录 Elena· 5 个月前 cookies,sessionStorage和localStorage的区别? sessionStorage用于本地存储一个会话(session) ...
- 关于Excel做表小知识记录
关于Excel做表小知识记录 最近使用Excel做了一系列的报表,觉得这是个很神奇的东西哈哈哈,以前我可是一想到Excel就开始头疼的人... 能用代码或者SQL语句解决的问题绝不会愿意留在Exce ...
- Maven知识记录(一)初识Maven私服
Maven知识记录(一)初识Maven私服 什么是maven私服 私服即私有的仓库.maven把存放文件的地方叫做仓库,我们可以理解成我门家中的储物间.而maven把存放文件的具体位置叫做坐标.我们项 ...
- Linux文件系统知识记录——ext2描述
最近完成了一个编程作业,大致功能是给定一个文件名,给出该文件所在目录和其本身所占用的簇号等信息.笔者选用了Linux的ext系列文件系统作为实验对象,通过实验对ext2文件系统的存储和索引有了一个较为 ...
- ASP.NET操作Oracle知识记录(采用ODP.NET)
最近因为要把以前做的一个项目数据库从MSSQL2005转移到Oracle上,所以开始接触Oracle,通过本篇随笔简单记录一些ASP.NET结合Oralce的操作: 因为微软未来不再支持 System ...
- TCP socket编程记录(C语言)
最近使用到TCP的socket编程,记录一下思路. TCP Socket 服务器编程思路 0.初始化套接字库 1.创建套接字----------2个(服务器本身需要一个套接字,客户端要返回一个套接字) ...
随机推荐
- Python 模块相对引用
文件结构如下 python_directory/ ├── __init__.py └── app ├── __init__.py ├── sub1 │ ├── __init__.py │ └─ ...
- <2013 07 22> 游历西欧
从本月11号开始到昨天,10天时间,和其他六位同学畅游了西欧,路经慕尼黑-巴塞罗马-尼斯-马赛-巴黎-阿姆斯特丹,最后回到慕尼黑,每个地方都待了两天,参观了主要的景点和建筑,见识了本地文化与饮食. 令 ...
- SQL SERVER临时表的使用
SQL SERVER临时表的使用 drop table #Tmp --删除临时表#Tmpcreate table #Tmp --创建临时表#Tmp( ID int IDENTITY (1 ...
- 重写toString方法
当你要读取关于对象的一些有用细节时,可以在对象上调用toString(). 如,当把一个对象引用传递给System.out.println();时,该对象的toString()方法被调用. Java中 ...
- Linux中权限管理之文件属性权限
chattr [+-=][选项] 文件或目录名 + 增加权限 - 删除权限 = 等于某权限 选项: i 文件设置i属性,不允许对文件进行删除.改名.添加.修改数据,相当于把整个文件锁起来了 目录设置i ...
- Springboot 错误信息:Required String parameter 'loginname' is not present 引发的研究
@PostMapping("/reg/change")public CommonSdo change( @RequestParam(value = "oldPasswor ...
- Kafka简介、安装
一.Kafka简介 Kafka是一个分布式.可分区的.可复制的消息系统.几个基本的消息系统术语:1.消费者(Consumer):从消息队列(Kafka)中请求消息的客户端应用程序.2.生产者(Prod ...
- FTP主动连接与被动连接
FTP(File Transfer Protocol, FTP)是TCP/IP网络上两台计算机传送文件的协议,应用层的协议,它基于传输层, FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而 ...
- Tensorflow学习笔记(1)--安装
安装 1.ubuntu 14.04 2. 清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/help/tensorflow/ (要求sudo权限,如果报 ...
- $GitHub边用边总结
以下用法是在ubuntu系统下的用法,主要内容整理自'廖雪峰的官方网站'. #1.安装git$ sudo apt-get install git #2.声明git账号$ git config --gl ...