tcp服务器搭建流程(tcp 服务器与客户端创建流程)

请问JAVA中创建一个TCP服务器端程序的骤是什么呢?

1.建立一个服务器socket并开始监听.

2.使用accept()方法取得新的连接.

3.建立输入和输出流.

4.在已有的协议上产生会话.

5.关闭客户端流和socket.

6.回到第二步或者到第七步.

7.关闭服务器socket.

怎样在自己电脑上建立一个TCP服务器

在自己电脑上建立一个TCP服务器的方法如下:

1、 创建一个ServerSocket;

2、从ServerSocket接受客户连接请求;

3、创建一个服务线程处理新的连接;

4、在服务线程中,从socket中获得I/O流;

5、对I/O流进行读写操作,完成与客户的交互;

6、关闭I/O流;

7、关闭Socket。

创建一个ServerSocket的方法如下:

ServerSocket server = new ServerSocket(post)

Socket connection = server.accept();

ObjectInputStream put=new ObjectInputStream(connection.getInputStream());

ObjectOutputStreamoput=newObjectOutputStream(connection.getOutputStream())。

简述TCP协议建立连接的过程

1,TCP使用三次握手

three-way

handshake

协议来建立连接,这三次握手为:

请求端(通常称为客户)发送一个

SYN

报文段(

SYN

1

)指明客户打算连接的服务器的端口,以及初始顺序号(

ISN

)。

服务器发回包含服务器的初始顺序号的

SYN

报文段(

SYN

1

)作为应答。同时,将确认号设置为客户的

ISN

1

以对客户的

SYN

报文段进行确认(

ACK

也为

1

)。

客户必须将确认号设置为服务器的

ISN

1

以对服务器的

SYN

报文段进行确认(

ACK

1

),该报文通知目的主机双方已完成连接建立。

发送第一个

SYN

的一端将执行主动打开(

active

open

),接收这个

SYN

并发回下一个

SYN

的另一端执行被动打开(

passive

open

)。另外,

TCP

的握手协议被精心设计为可以处理同时打开(

simultaneous

open

),对于同时打开它仅建立一条连接而不是两条连接。因此,连接可以由任一方或双方发起,一旦连接建立,数据就可以双向对等地流动,而没有所谓的主从关系。

 

2,应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);

如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

TCP连接建立过程

在TCP/IP中,TCP协议通过三次握手来建立连接,从而提供可靠的连接服务。

第一次握手:建立连接后,客户端向服务器发送syn包(syn=j),进入SYN_SEND状态,等待服务器确认;

第二次握手:当服务器收到syn包时,必须确认客户端的syn(ack=j+1)并发送一个syn包(syn=k),即syn+ack包。此时,服务器进入SYN_RECV状态。

第三次握手:SYN+ACK包,客户端收到服务器端发来的确认包ACK(ACK=k+1),来发送这个包来发送,客户端和服务器端进入建立状态,完成三路握手。

扩展资料:

重要概念:

无关的队列:三重握手协议、服务器维护一个独立队列,为每个客户的SYN包创建一个条目(SYN=j)表明服务器已经收到了SYN包和确认发送到客户,等待客户的确认包。

这些条目标识的连接处于服务器的Syn_RECV状态,当服务器接收到客户机的确认包时,它将删除该条目,服务器将进入已建立的状态。

Backlog参数:表示要保持的未连接队列的最大数量。

当服务器发送synack包时,如果没有收到客户端确认包,服务器将进行第一次重传,等待一段时间仍然没有收到客户端确认包,然后进行第二次重传。

如果重传号超过系统指定的最大重传号,系统将从半连接队列中删除连接信息。注意每个重传的等待时间可能不相同。

半连接生存时间:指半连接队列中条目的最长生存时间,即从接收SYN包到确认无效消息的最长服务时间。这个时间值是所有重传请求包的最长等待时间的总和。有时我们也称半连接生存时间为超时时间,SYN_RECV生存时间。

TCP/IP建立连接的步骤是什么?

TCP协议建立连接的过程:\\x0d\\x0a在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。\\x0d\\x0a\\x0d\\x0a第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;\\x0d\\x0a\\x0d\\x0a第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;\\x0d\\x0a\\x0d\\x0a第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。\\x0d\\x0a\\x0d\\x0a完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:\\x0d\\x0a\\x0d\\x0a未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。\\x0d\\x0aBacklog参数:表示未连接队列的最大容纳数目。\\x0d\\x0a\\x0d\\x0aSYN-ACK 重传次数 服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。\\x0d\\x0a\\x0d\\x0a半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和,有时也称半连接存活时间为Timeout时间、SYN_RECV存活时间。

未经允许不得转载:便宜VPS网 » tcp服务器搭建流程(tcp 服务器与客户端创建流程)