TCP三次握手
来源:互联网 发布:软件如何申请专利 编辑:程序博客网 时间:2024/05/16 23:07
”尽管T C P和U D P都使用相同的网络层( I P),T C P却向应用层提供与U D P完全不同的服务。
T C P提供一种面向连接的、可靠的字节流服务。
面向连接意味着两个使用T C P的应用(通常是一个客户和一个服务器)在彼此交换数据
之前必须先建立一个T C P连接。这一过程与打电话很相似,先拨号振铃,等待对方摘机说
“喂”,然后才说明是谁。“
tcp数据在ip数据包中的封装:
|IP首部|TCP首部|TCP数据
20字节 20字节
图:TCP包首部
有关tcp的三次握手《TCP/IP详解卷一》讲的挺详细了。tcp协议和udp协议都是建立在ip协议基础上的,tcp数据包也是封装在ip数据包中的。
第一次握手:客户机将tcp数据包中的syn置位1,初始序列号(ISN)是客户端随机产生
的一个值,确认号是0;并进入SYN_SEND状态
第二次握手:服务器收到这个同步请求数据包后会对客户端进行一个同步确认。这个数
据包中,序列号ISN是服务器随机产生的一个值,确认号是客户端的初始序
列号+1;服务器进入此时服务器进入SYN_RECV状态;
第三次握手:客户端收到这个同步确认数据包后,再对服务器进行一个确认。该数据包
中,序列号是上一个同步请求 数据包中的确认号值,确认号是服务器的初
始序列号+1。客户端和服务器进入ESTABLISHED状态,完成三次握手。
如图:
附:
SYN: (同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握手建立TCP连接时有效。表示一个新的TCP连接请求。
ACK: (确认编号,Acknowledgement Number)是对TCP请求的确认标志,同时提示对端系统已经成功接收所有数据。
FIN: (结束标志,FINish)用来结束一个TCP回话.但对应端口仍处于开放状态,准备接收后续数据。
未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
Backlog参数:表示未连接队列的最大容纳数目。
参考文章:
TCP三次握手协议的简单解释
TCP序列号和确认号详解
- TCP:三次握手/四次握手
- TCP三次握手/四次握手
- TCP三次握手,四次握手
- tcp 三次握手 四次握手
- TCP三次握手,四次握手
- TCP三次握手四次握手
- TCP三次握手
- TCP三次握手协议
- TCP的三次握手
- TCP三次握手
- TCP三次握手
- TCP 三次握手协议
- TCP/IP三次握手
- TCP 三次握手
- TCP三次握手
- tcp连接三次握手
- TCP三次握手
- tcp三次握手示意图
- iOS 图片压缩UIImage方法扩展
- 这两年互联网市场为什么涨薪这么快?目前的市场供需情况? 现在互联网市场行情如何?需要什么样的人
- VARIANT 与char *的相互转换
- 栈应用之计算全括号形式的数值表达式
- Frame-Relay基础及配置学习笔记
- TCP三次握手
- [Linux自动化管理] 批量追加用户
- PB对DW数据窗口操作必学
- eclipse加载安卓工程的时候出现select at lease one project错误
- 每个极客都应该知道的Linux技巧
- jquery easyui datagrid 两次加载的问题
- Java从网络下载图片
- 【索引】Codeforces Round #234 (Div. 2)
- eclipse ssh json