建立TCP连接过程

1.服务器实例化一个ServerSocket 对象, 表示通过服务器上的端口通信.

ServerSocket serverSocket = new ServerSocket(port);

2.服务器调用ServerSocket的Accept方法,该方法一直等待直到客户端连接到服务器上给定的端口.

Socket server = serverSocket.accept();

3.服务器正在等待时,客户端实例化一个Socket对象, 指定服务器名称和端口号来请求连接.

Socket client = new Socket(serverName, port);

4.Socket类的构造函数试图将客户端连接到制定的服务器和端口号, 如果通信被建立, 则在客户端创建一个Socket对象能够与服务器进行通信.

5.在服务器端, accept()方法返回服务器上一个新的socket引用, 该socket连接到客户端的socket.

时间: 2024-11-04 17:19:32

建立TCP连接过程的相关文章

通过UDP建立TCP连接

解释 通过UDP广播查询服务器的IP地址,然后再建立TCP点对点连接. 应用场景 在服务器IP未知时,并且已知服务器与客户端明确在一个局域网或者允许组播的子网下. 通过UDP发现服务器地址然后再进行TCP连接. (PS:万维网很多路由器对组播进行了限制,所以不能通过UDP报文在万维网上进行服务器查询) 主要问题 Android真机和模拟器对组播处理不同 Android不同系统版本对组播处理不同 不同网络对组播有限制,如部分路由网络限制UDP报文 简单实现 传统组播方式,通过255.255.255

一个人也可以建立 TCP 连接呢

今天(恰巧是今天)看到有人在 SegmentFault 上问「TCP server 为什么一个端口可以建立多个连接?」.提问者认为 client 端就不能使用相同的本地端口了.理论上来说,确定一条链路,只要五元组(源IP.源端口号.目标IP.目标端口号.协议)唯一就可以了,所以这不应该是技术限制.而实际上,Linux 3.9 之后确实可以让客户端使用相同的地址来连接不同的目标,只不过要提前跟内核说好而已. 当然,你不能使用同一个 socket,不然调用connect连接的时候会报错: 1 [Er

图说使用socket建立TCP连接

在网络应用如火如荼的今天,熟悉TCP/IP网络编程,那是最好不过.如果你并不非常熟悉,不妨花几分钟读一读. 为了帮助快速理解,先上个图,典型的使用socket建立和使用TCP/UDP连接过程为(截图来源戳这里): 下面仅讲述TCP连接建立的过程. (参考资料来自这里) 1. Initial State (初始阶段) o TCP is connection based, ... establishing it is a complex multistage process o initially

python 批量执行脚本(服务端和客户端建立TCP连接)

有很多开源的批量部署的工具可以使用,比如puppet, ansible , saltstack , chef . 但这些工具都有自己的一套语法规则,你得按照他的语法来编写程序,然后批量执行. 那有没有方法可以直接写bash 或者Python脚本,然后批量执行呢? 方法当然是有的,需要自己写程序来传输脚本,拷贝文件,再复杂点,可以自定义脚本式同步还是异步执行,自定义要执行的主机组,等等,需要根据自己的业务需要来想. 这里只是抛砖引玉,我采用建立socket(TCP)连接来批量执行脚本. 服务端脚本

建立TCP连接的三次握手

请求端(通常称为客户)发送一个 SYN 报文段( SYN 为 1 )指明客户打算连接的服务器的端口,以及初始顺序号( ISN ).服务器发回包含服务器的初始顺序号( ISN )的 SYN 报文段( SYN 为 1 )作为应答.同时,将确认号设置为客户的 ISN 加 1 以对客户的 SYN 报文段进行确认( ACK 也为 1 ).客户必须将确认号设置为服务器的 ISN 加 1 以对服务器的 SYN 报文段进行确认( ACK 为 1 ),该报文通知目的主机双方已完成连接建立. 三次握手协议可以完成两

libnids TCP数据流重组,显示TCP连接过程的程序总无法捕获数据包解决办法:

法一: 指定可用网卡: nids_params.device="lo"; 法二: nids.h中有这么一段: struct nids_chksum_ctl { u_int netaddr; u_int mask; u_int action; u_int reserved; }; extern void nids_register_chksum_ctl(struct nids_chksum_ctl *,int); 这段是相关与计算校验和的,比较新的网卡驱动会自动计算校验和,我们要做的就是

客户端与服务端建立tcp连接三次握手之前做了什么----DNS

操作系统在握手之前进行了DNS查询   DNS 迭代查询 1.操作系统会首先在本地缓存中查询IP 2.没有的话会去系统配置的DNS服务中去查询 3.如果这时候还没得话,会直接去 DNS 根服务器查询,这一步查询会找出负责 com 这个一级域名的服务器 4.然后去该服务器查询 google 这个二级域名 5.接下来三级域名的查询其实是我们配置的,你可以给 www 这个域名配置一个 IP,然后还可以给别的三级域名配置一个 IP PS:DNS 是基于 UDP 做的查询, 原文地址:https://ww

TCP建立连接和释放连接过程

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议.TCP建立连接需要三次握手,释放连接需要四次握手. 1.TCP整个过程流程图 并且TCP整个过程可以看成是状态机 2.TCP建立过程(三次握手) TCP连接过程: (1) 服务端通过socket,bind和listen准备好接受外来的连接,此时服务端状态为Listen (2)客户端通过调用connect来发起主动连接,导致客户端TCP发送一个SYN(同步)字节,

TCP/IP详解学习笔记--TCP连接的建立与终止

1.基本概念 由于TCP是一个面向连接的协议,无论在哪一方发送数据之前,都必须先在双方之间建立连接,接下来我们就讨论建立连接的具体过程 2.建立TCP连接 如下图所示: 1.首先请求端发送一个序列号为1(表明该方的起始序列号为1)的SYN段,此时由于连接还未建立成功,所以携带的数据为0,并前发送端还告诉接收端它所能接收的最大报文段mss 2.接收端收到SYN段后,也给对方回一个SYN端,告知对方它的其实序列号为5并携带给对方回的ack,同时也告诉对方它所能接收的最大报文段mss 3.请求端在收到