TCP是面向连接的协议,面向连接的意思就是在连接的基础上实现数据的传输。TCP面向连接保证了它在通信过程中的可靠性。
TCP头部是20个字节,详细的报文格式和各个字段的解释可以看下面:
在TCP通信之前,建立连接的过程被称为三次握手,下面是wireshark抓出来的图。
1.第一次握手:客户端发送SYN标志,序列号seq(随机生成,图中序列号是0是wireshark做了相对处理),源端口随机生成,目标端口5000(程序决定),
头长度40字节是因为包含了可选字段。
2.第二次握手:服务端发回客户端,ACK标识同意接收连接,此时从客户端到服务端单向连接建立,SYN标识服务端向客户端建立连接,同时标识了序列号
(同上)对于ack(区别上面的ACK(1bit)标识,ack是4bytes)则是上一个包的seq+1,告诉客户端下一个包的seq。
3.第三次握手:客户端发回服务端,ACK标识同意接收服务端的连接,此致双向连接都建立好了。这个包的seq就是上个包的ack,再者这里的ack就是下个
包的seq。
socket通信机制:
服务端 客户端
socket socket
bind
listen connect
accept(阻塞)
read/write write/read
close close
那么对于tcp三次握手是在程序的什么时候建立的呢?现在我把客户端bind之后跑到listen之前(未执行listen),然后从客户端一旦执行connect,立刻
被服务端RST了。这里可以说明是由connect来发出tcp三次握手的第一个SYN包,wireshark可以抓出来。
现在把客户端往下走,调用listen,但是没有调用accept,然后客户端重新调用connect,这时候wireshark就马上出现了tcp三次握手建立成功。这个时候
已经有一个成功建立连接的套接字在TCP/IP协议栈的队列里。
建立连接之后,调用accept函数马上就返回的,accept函数的作用就是从TCP/IP协议栈队列中取出一个成功建立连接的套接字,用于和用户层交互。accept
是阻塞型的,如果accept发现队列里是空的,就会一直阻塞,直到出现成功连接的套解字。
总计上面的,整个流程是这样的:
服务端 客户端
socket socket
bind
listen(端口和IP都已经确定) connect(发出SYN包)
(<=============tcp连接三次握手=========>)
accept(取出队列中的套解字)
close close
分享到:
相关推荐
三次握手,TCP/IP协议三次握手,TCP/IP协议三次握手
Internet是使用TCP/IP协议簇。互联网发展之所以迅猛,恐怕得益于TCP/IP协议簇吧。Internet发展到今天,TCP/IP协议也显示出它的缺憾之处。为了保障信息安全,大量新的安全协议加入到TCP/IP协议大家庭里。无论是技术...
tcp/ip,三次握手四次死挥手
tcp/ip协议;三次握手四次挥手;tcp/udp;http/https;数据链路层,网络层,传输层以及应用层
4.5 利用TAO跳过三次握手 4.6 小结 第5章 T/TCP协议的实现:插口层 5.1 概述 5.2 常量 5.3 sosend函数 5.4 小结 第6章 T/TCP的实现:路由表 6.1 概述 6.2 代码介绍 6.3 radix_node_head结构 6.4 rtentry结构 6.5 rt_...
摘 要:研究TCP/IP网络的监听, “三次握手”建立连接的过程,以及拆断TCP“三次握手”的方法。以RedHat 9.0(Linux)、Windows 2000 Server、Windows XP Professional、Windows XP Home、Windows 2003 为主要操作系统...
TCPIP教程.zip 本教程内容包括: 以太网 TCP/IP协议: 三次握手,四次握手,keepalive选项 DNS协议 UDP协议 RPC原理 NFC协议 链路层介绍
对TCP/IP和socket相关的知识和原因进行了一个简单的总结。
讲解TCPip三次握手机制,是如何保证安全性和准确性的
计算机网络基本知识(TCP/IP四层模型、TCP三次握手和四次挥手、http协议)
介绍了TCP/IP协议的三次握手,并且解释了传输超时系统的设置。
TCP连接建立(三次握手)和拆除,其中介绍了很多一般书上没有出现的内容如半打开和半关闭;TCP数据交互和窗口机制;TCP超时与重传(可靠传输),并描述了多种实际算法;TCP的各种计时器;TCP的一些修改建议,并提出了T/TCP,详细...
TCP/IP详解 卷1:协议 译者序 前言 第1章 概述 1 1.1 引言 1 1.2 分层 1 1.3 TCP/IP的分层 4 1.4 互联网的地址 5 1.5 域名系统 6 1.6 封装 6 1.7 分用 8 1.8 客户-服务器模型 8 1.9 端口号 9 1.10 标准化过程 10 ...
TCP/ip 协议族各层作用 TCP 三次握手四次断开过程
学习TCP/IP协议基础知识,了解三次握手和四次挥手的含义的意义
主要介绍了TCP/IP协议中三次握手四次挥手的原理及流程分析,具有一定参考价值,需要的朋友可以了解下。
socket通讯原理以及tcp、ip三次握手机制分析。
在TCP/IP协议中,建立连接协议是三次握手,关闭连接是四次握手。
这个目标的实现省略了连接开始时TCP的三次握手,并缩短了连接结束时TIME_WAIT状态的持续时间。我们将会看到,在客户-服务器事务中,T/TCP的性能与UDP相当,而且T/TCP具有可靠性和适应性,这两点相对UDP来说都是很大...
《TCP/IP详解,卷1:协议》是一本完整而详细的TCP/IP协议指南。描述了属于每一层的各个协议以及它们如何在不同操作系统中运行。作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输...