TCP/IP协议详解-TCP简介与TCP建立与终止
来源:互联网 发布:苹果手机怎么看mac地址 编辑:程序博客网 时间:2024/06/03 18:21
1 TCP简介
TCP是面向连接,可靠的字节流服务.Tcp对字节流的内容不作任何解释,它不知道二进制数据传输的是二进制数据,ASCII字符或其他类型数据。
TCP提供全双工服务,数据能在两个方向上独立的进行传输
TCP首部数据格式:
URG 紧急指针
ACK 确认序号有效
PSH 接收方应该尽快将这个报文段交给应用层
RST 重新连接
SYN 同步序列号用来发起一个连接
FIN 发送端完成发送任务
不同于IP检验和只包含首部,TCP检验和与UDP检验和相似,包含首部和数据
最常见的可选字段为最长报文大小(MSS)
2 TCP连接与终止
TCP连接与终止的tcpdump输出:
TCP连接与终止的时间序列:
建立连接协议(三次握手):
1)客户端发送一个SYN段指明客户打算连接的服务器端口,以及初始序号
2)服务器发挥包含服务器的初始序号的SYN报文段作为应答,同时,将确认序号设置为客户的ISN加1以对客户的SYN报文段进行确认。一个SYN将占用一个序号
3)客户必须将确认序号设置为服务器的ISN加1以对服务器的SYN报文段进行确认
连接终止协议(四次握手):
TCP是全双工,因此每个方向必须单独关闭。当TCP接连收到一个FIN只意味着这一方向上没有数据流动,进行半关闭状态,但依然可以发送数据。
3 连接建立超时
telnet服务器,然后断开服务器电缆时tcpdump输出:
可以看到SYN报文段进行了重传,当在设定的时间限制内依然无法成功建立连接,放弃连接
tos 0x10是IP数据报内的服务类型,tlenet将这个字段设置为最小时延
重传的时间存在一定规律。因为TCP软件采用500ms的定时器,并采用指数退避算法来确定每次重传时间
4 最大报文长度
tcpdump输出结果:
一个连接建立时,双方要通告各自的MSS,然后进行协商。如果一方不接受另一方通告的mss,就采用默认的mss(536字节)
sun收到的MSS选项值为256,发送的报文段不会超过256字节的数据。slip收到的MSS选项值为1460,但它的外出接口的MTU长度为296,为了避免分段,它不会发送超过256字节数据的报文段
5 TCP的半关闭
TCP是全双工,因此每个方向必须单独关闭。当TCP接连收到一个FIN只意味着这一方向上没有数据流动,进入半关闭状态,但依然可以发送数据。
6 TCP状态迁移
TIME_WAIT状态称为2MSL等待状态。MSL为一个报文段最大生存时间,该时间是有限的。因为TCP报文段以IP数据包在网络传输,IP数据包有限制其生存时间的TTL字段
当TCP执行一个注定关闭,并发回最后一个ACK,该来连接必须在TIME_WAIT状态停留的时间为2倍MSL,这样可以让TCP再次发送最后的ACK以防这个ACK丢失
同时需要注意的,一般情况,在TIME_WAIT状态下,对应的socket(客户IP地址和端口,服务器IP地址和端口)不能再被使用
处于TIME_WAIT的主机出现故障,会在MSL秒内重启,并使用原来的socket进行连接。这样的话,故障前发出的报文段会被错误的当作属于重启后新连接的报文段。因此规定TCP在重启后的MSL秒内不能建立任何连接
7 复位报文段
无论何时一个报文段发往连接出现错误,TCP都会发出一个复位报文段
到不存在的端口的连接请求:
tcpdump输出:
异常终止一个连接:
异常终止连接好处:
1)丢弃任何待发数据并立即发送复位报文段
2)RST的接收方会区分另一端执行的是异常关闭还是正常关闭
客户端:
tcpdump输出:
RST报文段不会导致另一端产生任何响应,另一端终止连接,通知应用层复位,不需要对RST报文发送ACK报文
服务端:
检测半打开连接:
服务器断开网络,重启,然重新连网来模拟半打开连接
tcpdump输出:
8 同时打开
A中的客户程序与B中的服务器程序建立连接,B中的客户程序与A中的服务器程序建立连接。客户程序选择的本地端口不是另一端服务器进程所熟悉的。这样设计就为了处理同时打开情况
例子:
主机A:
主机B:
tcpdump输出:
9 同时关闭
10 TCP选项
kind字段说明选项类型
len字段说明总长度
设置无操作选项的原因在于允许发送方填充字段为4字节的倍数
- TCP/IP协议详解-TCP简介与TCP建立与终止
- TCP/IP详解学习 -- TCP连接的建立与终止
- 《TCP/IP详解-协议》(17、18)TCP连接建立与终止
- 《TCP/IP详解 卷1:协议》 读书笔记 第十八章 TCP连接的建立与终止
- 《TCP/IP详解 卷1:协议》 读书笔记 第18章 TCP连接的建立与终止
- 《TCP/IP详解 卷1:协议》第十八章 TCP连接的建立与终止
- 《TCP/IP详解 卷1:协议》 读书笔记 第十八章 TCP连接的建立与终止
- TCP/IP详解卷1:协议(十)【TCP:传输控制协议, TCP连接的建立与终止】
- TCP建立与终止
- TCP/IP之十:TCP连接的建立与终止
- TCP/IP之十:TCP连接的建立与终止
- TCP-IP详解卷1-18:TCP连接的建立与终止
- 【TCP/IP详解】第18章 TCP连接的建立与终止
- TCP/IP详解--TCP三次握手建立连接与四次握手终止连接
- TCP/IP详解学习笔记--TCP连接的建立与终止
- TCP/IP详解学习笔记(13)-- TCP连接的建立与终止
- TCP/IP详解卷1 读书笔记:第十八章 TCP连接的建立与终止
- 《TCP/IP详解》学习笔记-第17/18章 TCP:概述、连接建立与终止
- vmware vm tools下载地址
- Launcher中采用的设计模式
- [LeedCode OJ]#154 Find Minimum in Rotated Sorted Array II
- HTTP请求的使用以及POST与GET的区别
- dropdown模式下可以设置Prompt的Spinner
- TCP/IP协议详解-TCP简介与TCP建立与终止
- Android游戏开发之数独课时----4
- iOS 分类的基本使用(更改frame)以及全局变量.pch的使用
- NSDate相关知识点
- 欢迎使用CSDN-markdown编辑器
- JAVA并发编程6_线程协作/生产者-消费者
- Java Classloader机制解析
- mybatis+mysql返回插入值后的主键id
- C#开发微信公众平台-就这么简单