请问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存活时间。