tcp的三次连接握手和四次释放握手
http://blog.csdn.net/whuslei/article/details/6667471/
这篇博客讲的很清楚。
下面我简单说明一下:三次连接握手,首先client发送请求报文,然后服务器返回,客户端在发送请求。
为什么要三次握手,两次握手不就够了吗?:三次握手是为了确保安全,client向server发送请求,server返回了以后,server不知道client有没有收到返回,所以无法确定client是否能收的到我的响应,倘若不能收到,server还有发的必要吗?对吧,所以,客户端在发一次请求,证明我收到了你的请求,我们两个的通信没有问题,可以开始通信啦~个人觉得这相当于每个人都发送接收一次试试看能不能互相收到,很简单的道理。
为什么要四次握手:首先需要知道一点,无论是客户端还是服务器,都可以取消连接,过程如下(假设为client取消):
client:我要取消连接,你长的太丑...(发送给server消息)
server:我收到了你的信息,不要我拉倒,但是取消之前还是要相互确认一下的。(随即发送给client一个回复)
server:哎呀,他之前请求的东西还没发完呢,等发完了告诉他吧...(过了一会,消息全部发送完毕),好啦,现在消息发送完啦,我也不欠你的啦,88~然后发送一条消息,
告诉client消息发送完毕
client:虽然他是个丑逼,但是还是挺负责的,我也负责吧,随即发送了一条消息告诉server,我收到了你发的消息
至此,通讯完毕。
TCP协议是不是一个很负责任的协议呢?一旦你以负责的角度去思考,TCP就很容易理解啦。
另外:TCP报文是属于IP报文数据的一部分。
IP报文分为IP报头和数据
而数据又包括TCP的报头和数据
所以,才叫做TCP/IP协议嘛!
对了,忘了说一点,建立连接的时候标志有SYN,ACK
取消连接的时候标志有FIN,ACK,ACK为1则表示发送没有问题
tcp的三次连接握手和四次释放握手的更多相关文章
- TCP的三次握手与四次释放
TCP的三次握手与四次释放 一.名词解释 序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生:给字节编上序号后,就给 ...
- TCP的三次握手(建立连接)和四次挥手(关闭连接)
参照: http://course.ccniit.com/CSTD/Linux/reference/files/018.PDF http://hi.baidu.com/raycomer/item/94 ...
- TCP\IP三次握手连接,四次握手断开分析
TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标 ...
- TCP连接的建立与释放(三次握手与四次挥手)
TCP连接的建立与释放(三次握手与四次挥手) TCP是面向连接的运输层协议,它提供可靠交付的.全双工的.面向字节流的点对点服务.HTTP协议便是基于TCP协议实现的.(虽然作为应用层协议,HTTP协议 ...
- python网络编程--TCP连接的三次握手(三报文握手)与四次挥手
一.TCP连接 运输连接有三个阶段: 连接建立.数据传送和连接释放. 在TCP连接建立过程中要解决以下三个问题: 1,要使每一方能够确知对方的存在. 2.要允许双方协商一些参数(如最大窗口之,是否使用 ...
- TCP的三次握手(建立连接)和四次挥手(关闭连接)(转)
转自:(http://www.cnblogs.com/Jessy/p/3535612.html) 参照: http://course.ccniit.com/CSTD/Linux/reference/f ...
- TCP协议三次握手连接四次握手断开和DOS攻击
转载:http://blog.csdn.net/fw0124/article/details/7452695 TCP连接的状态图 TCP建立连接的三次握手过程,以及关闭连接的四次握手过程 贴一个tel ...
- TCP系列02—连接管理—1、三次握手与四次挥手
一.TCP连接管理概述 正如我们在之前所说TCP是一个面向连接的通信协议,因此在进行数据传输前一般需要先建立连接(TFO除外),因此我们首先来介绍TCP的连接管理. 通常一次完整的TCP数据传输一般包 ...
- tcp连接过程中的三次握手和四次挥手
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手握手建立连接 @第一次握手: 建立连接是,客户端A发送SYN包到服务器B,并进入SYN_SEND状态,等待B确认. @第二次握手: 服务 ...
随机推荐
- java计算两个时间相差(天、小时、分钟、秒)
public static Long dateDiff(String startTime, String endTime, String format, String str) { // 按照传入的格 ...
- /etc/bashrc和/etc/profile
在一般的 linux 或者 unix 系统中, 都可以通过编辑 bashrc 和 profile来设置用户的工作环境, 很多文章对于 profile 和 bashrc 也都有使用, 但究竟每个文件都有 ...
- cocos2d-x CCHttpRequest获取网络图片并显示
转自:http://www.cnblogs.com/hzj730/p/3178431.html //图片结构 class imgstruct : public CCObject { public: i ...
- c++常用函数STL
完c++快一年了,感觉很有遗憾,因为一直没有感觉到c++的强大之处,当时最大的感觉就是这个东西的输入输出比C语言要简单好写. 后来我发现了qt,opencv,opengl,原来,c++好玩的狠. 在这 ...
- web.xml中的<jsp-config>的用法详解
<jsp-config> 包括<taglib> 和<jsp-property-group> 两个子元素. 其中<taglib>元素在JSP 1.2时就已 ...
- window下redis如何查看版本号
1.启动服务端:redis-server 2.启动客户端:redis-cli 3.客户端输入:info 即可.
- 使用superobject 解析Json数据
接口数据有如下规范{"error": 0, "msg": "", "data": ...} 其中数据data类型不确定. ...
- SQL 排序规则问题
http://blog.csdn.net/delphigbg/article/details/12744807 MSSQL排序规则总结 什么是排序规则呢? 排序规则根据特定语言和区域设置标准指定对 ...
- 原生app与WebApp的区别
Native App开发Native App开发即我们所称的传统APP开发模式(原生APP开发模式),该开发针对IOS.Android等不同的手机操作系统要采用不同的语言和框架进行开发,该模式通常是由 ...
- CodeChef - ELHIDARR Find an element in hidden array(二分交互)
Find an element in hidden array There is an array of length N consisting of non-negative integers. T ...