深入理解UDP,TCP

已经学过好几次这两个概念
每次都是似懂非懂
今天听了好几次
自己做了个简单总结
描述不清楚还望指正

1.UDP
A、UDP没有客户端和服务器端,连接一定是由客户端发起,因为只有服务器端的端口号和IP地址是固定的,进行通信时一定要用IP地址和端口号进行连接,即bind()方法;并用send()发送数据,另外一方接收数据时用recvfrom()接收,断开连接时可以是任意一方断开,因为服务器已经记录了客户端的IP地址和端口号;
B、UDP是不可靠连接的协议,发送大量的,允许丢失的文件时允许用UDP协议进行传输,如音频,视频等文件,丢失一部分数据造成的结果对观看者没有什么影响。
深入理解UDP,TCP_第1张图片

2.TCP
)TCP是面向连接的,可靠的,字节传输的协议。
A、面向连接,有客户端和服务器端,在首次进行连接时,一定要经过三次握手协议,在断开连接时,是四次挥手协议;connect,read,write,close。
B、时刻监控网络状态,利用滑动窗口来控制数据包的传输,网络状态变差时,传输字节数为原来的1/2,网络状态恢复时,若现在数据传送量>原来的1/2,则传送速度变为原来的一倍;若现在数据传送量<原来的1/2,则每传送一次,增加一个字节。
深入理解UDP,TCP_第2张图片
简单的基于客户端和服务器的通信:
服务器端:
深入理解UDP,TCP_第3张图片
客户端:
深入理解UDP,TCP_第4张图片
输出结果:
深入理解UDP,TCP_第5张图片
原理:
客户端确定服务端口号,建立socket服务,定义一个socke,用来接收accept方法返回的来自服务器端的消息,用bufferedreader ,用getinputstream方法输入来自客户端的信息,用printwriter,getoutputstream方法来先客户端发出来自服务器端的消息。将pw消息用system.out.println写入输出流,flush方法发送到客户端,客户端用bufferedreader,getinputstream方法接收。关闭输入流,关闭输出流,关闭套接字。

你可能感兴趣的:(计算机网络,socket)