TCP/IP|| 建立连接或终止
1.TCP是一个面向连接的协议,在双方发送数据时需要之间建立连接.
当使用telnet命令是连接对应的端口产生TCP连接,通过tcpdump命令查看TCP报文段的输出
源>目的:标志
在标识中有4个bit标志,分别表示
标志 | 3字符编写 | 描述 |
S F R P . |
SYN FIN RST PSH |
同步序号 发送方完成数据发送 复位连接 将数据送往接受进程 标志比特均为0 |
2.ack表示确认,只有在首部中的ACK标志比特设置为1标示
3.win字段标示发送端窗口大小,当没有进行交换,大小默认为4096
4.<mss 1024>标示发送端指明的最大报文段长度选项,发端不接收超过这个长度的TCP报文段.
2.建立连接协议
1.请求端发送一个SYN指明客户打算连接的服务端口,以及初始序号,SYN报文段为1
2.服务器发回包含服务器的初始化序号SYN报文段作为应答,将确认序号设置为客户SYN加1以对客户的SYN报文段进行确认,一个SYN占用一个序号.
3.客户必须将确认的序号设置为服务器的ISN加1对服务器的SYN进行确认已完成连接,这种过程叫3次握手(three-way handshake)
当建立连接发送SYN时,为连接选择一个初始序号,ISN随时间变化,因此每个连接拥有不同的SYN,
3.连接终止协议
在终止连接时需要经过4次握手实现,由TCP的半关闭状态造成,一个TCP为全双工,因此每个方向必须单独关闭,原则是当一方完成数据连接时通过发送一个FIN来终止方向连接,意味着FIN在这一方向没有数据流动.
一个TCP在收到一个FIN时也可以发送数据.在进行FIN的一方执行主动关闭,另一方执行被动关闭,当服务器收到FIN,发回一个ACK,确认序号为收到序号+1,一个FIN占用一个序号,通过服务器还向应用程序传送一个文件终结符,接着服务器程序关闭连接,导致服务端发送一个FIN,客户必须发回确认.
3.服务类型字段
当出现超时时m出现[tos 0x10] 作为最小时间延迟
4.最大报文长度
MSS用于表示TCP穿往另一端的最大快数据长度,当建立连接时,双方需要告知MSS,通常情况下为1024,最终IP数据报通常为40 bit,20bitTCP首部和20bitIP首部
当目的IP地址为“非本地(nonlocal)”,MSS通常默认值为536,区分地址的方法为当目的IP地址的网络号雨子网号和我们相同,则是本地的,否则为不同,可以通过设置MSS为尽可能多的大来确认
MSS让主机限制另一端发送数据库的长度,加上主机可以控制数据报的长度,可以使用较小的MTU来连接主机避免分段.
5.TCP半关闭
半关闭主要可以在结束发送时接收另一端的能力,围绕这个特性,需要为应用程序说明,
6.TCP state change
状态变迁的子集是典型的,在导致TSTABLELSHED状态变迁打开一连接导致,离开的变迁对应一个关闭连接。
2MSL状态作为TCP实现的报文段最大生成时间MSL是任何报文在被丢弃前在网络最长时间,在对一个给定MSL时,处理的原则是当TCP执行一个主动关闭后发挥最后一个ACK,连接在TIME_WAIT状态中停留的时间为2倍的MSL,使TCP发送最后的ACK以免丢失。
FIN_WAIT_2状态为发送FIN并在另一端确认,除非进行半关闭,否则将等待另一层的应用层意识到收到一个文件的结束符号说明,并向我们发送一个FIN来关闭另一端的连接,只有另一端的进程完成关闭,FIN_WAIT_2状态才可以进入TIME_WAIT状态,但也有可能进入COLSE_WAIT状态.
7.检测半打开连接
如果一方处于异常终止或者未知连接状态,成为TCP的半打开连接状态,只要不打算在半打开连接传输数据,人处于连接状态泽不会检测到另一方的异常,当用户处于半打开连接状态时,再重启后服务器的ARP为空,因此需要ARP的请求和应答.
8.同时打开z
两个应用程序同时主动打开时存在的,每一方发送SYN,同时传递给对方,需要每一方使用的端口作为本地端口,称作同时打开(simulataneous open),在同时打开的状态下,进入SYS_SENT状态,每一端收到SYN时,状态变为SYN_RCVD,同时发送SYN确认,当受访收到SYN对应的ACK时,变迁为ESTABLISHED
9.同时关闭
在发送FIN,也有可能存在同时关闭(simltaneous close).在应用层中发出关闭命令,两段从ESTABLELISHED变为FIN_WAIT_1,导致双方发送FIN,收到FIN后,状态从FIN_WAIT_1变迁到CLOSING,发送最后的ACk,当收到最后的ACK时,状态变为TIME_WAIT
10TCP选项
在RFC 1323中,定义了TCP选项
选项的开始1字节的kind字段标示选项的类型,0和1占1bit,len字节,说明总长度,包括kind和len.
无操作选项允许发送方填充字段为4bit的倍数
TCP/IP|| 建立连接或终止的更多相关文章
- TCP/IP建立连接的时候ISN序号分配问题
初始建立TCP连接的时候的系列号(ISN)是随机选择的,那么这个系列号为什么不采用一个固定的值呢?主要有两方面的原因 防止同一个连接的不同实例(different instantiations/inc ...
- TCP/IP长连接和短连接
http://www.cnblogs.com/bigwalnut/articles/2129070.html TCP/IP通信程序设计的丰富多样性 刚接触TCP/IP通信设计的人根据范例可以很快编出一 ...
- 计算机网络:TCP协议建立连接的过程为什么是三次握手而不是两次?【对于网上的两种说法我的思考】
网上关于这个问题吵得很凶,但是仔细看过之后我更偏向认为两种说的是一样的. 首先我们来看看 TCP 协议的三次握手过程 如上图所示: 解释一下里面的英文: 里面起到作用的一些标志位就是TCP报文首部里的 ...
- [TCP/IP] 关闭连接后为什么客户端最后还要等待2MSL
MSL(Maximum Segment Lifetime)报文最大生存时间,2MSL即两倍的MSL,TCP允许不同的实现可以设置不同的MSL值. 第一,保证客户端发送的最后一个ACK报文能够到达服务器 ...
- TCP/IP 相关知识点与面试题集
第一部分:TCP/IP相关知识点 对TCP/IP的整体认 链路层知识点 IP层知识点 运输层知识点 应用层知识点 (这些知识点都可以参考:http://www.cnblogs.com/newwy/p/ ...
- 网络层、传输层、应用层、端口通信协议编程接口 - http,socket,tcp/ip 网络传输与通讯知识总结
引: http://coach.iteye.com/blog/2024511 什么是TCP和UDP,以及二者区别是什么? TCP的全称为传输控制协议.这种协议可以提供面向连接的.可靠的.点到点的通信. ...
- SYN(synchronous)TCP/IP
SYN(synchronous)是TCP/IP建立连接时使用的握手信号.在客户机和服务器之间建立正常的TCP网络连接时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表示接收到了这个消息, ...
- SQL Server 连接问题-TCP/IP
原文:SQL Server 连接问题-TCP/IP 出自:http://blogs.msdn.com/b/apgcdsd/archive/2012/02/24/ms-sql-server-tcp-ip ...
- TCP/IP 笔记 - TCP连接管理
TCP是一种面向连接的单播协议,在发送数据之前,通信双方必须在彼此建立一条连接:这与UDP的无连接不同,UDP无需通信双方发送数据之前建立连接.所有TCP需要处理多种TCP状态时需要面对的问题,比如连 ...
随机推荐
- @NOIP2018 - D1T1@ 铺设道路
目录 @题目描述@ @考场上的思路@ @比较正常的题解@ @题目描述@ 春春是一名道路工程师,负责铺设一条长度为 n 的道路. 铺设道路的主要工作是填平下陷的地表.整段道路可以看作是 n 块首尾相连的 ...
- Mysql查询某个月的每一天的数据
需求:查询最近三个月的每一天的业绩总和 因为最近三个月每个月的天数是不一样,所以不能用这篇文章:Mysql查询最近30天的数据(每天的业绩总和数据) 介绍的用固定多少天去查数据.需要一个新方法. 一. ...
- PyTorch 学习笔记(四):权值初始化的十种方法
pytorch在torch.nn.init中提供了常用的初始化方法函数,这里简单介绍,方便查询使用. 介绍分两部分: 1. Xavier,kaiming系列: 2. 其他方法分布 Xavier初始化方 ...
- python selenium 基础框架
base_page.py # coding=utf-8 import time from selenium.common.exceptions import NoSuchElementExceptio ...
- javascript 宽度和高度
宽度和高度 对于编写css代码时,宽度和高度就是width和height 但是在JavaScript中,还有其他的宽度和高度,比如offsetWidth,offsetHeight,clientX,cl ...
- 2014年NOIP普及组复赛题解
题目涉及算法: 珠心算测验:枚举: 比例简化:枚举: 螺旋矩阵:模拟: 子矩阵:状态压缩/枚举/动态规划 珠心算测验 题目链接:https://www.luogu.org/problem/P2141 ...
- poj1573
题意:给出一个矩形,N,E,S,W分别代表进行移动的方向,如果走出矩形网格则输出经过的网格数,如果在矩形网格内循环,则输出没进入循环之前所走过的网格数和循环所经过的网格数: 思路:创建两个数组,一个字 ...
- [转载] 使用StAX解析xml
StAX 概述 从一开始,Java API for XML Processing (JAXP) 就提供了两种方法来处理 XML:文档对象模型(DOM)方法是用标准的对象模型表示 XML 文档:Simp ...
- [转]在Windows中安装Memcached
Memcached是一个高并发的内存键值对缓存系统,它的主要作用是将数据库查询结果,内容,以及其它一些耗时的计算结果缓存到系统内存中,从而加速Web应用程序的响应速度. Memcached最开始是作为 ...
- Python--day41--条件
1,条件 #锁 #acquire release#一个条件被创建之初 默认有一个False状态#False状态 会影响wait一直处于等待状态#notify(int数据类型) 造钥匙 代码示例:条件. ...