TCP UDP协议网络通讯

xiaoxiao2021-02-28  81

最近开始面试了,简单整理一下,不涉及复杂 的代码逻辑。  网络通讯的要素:   1.IP地址:网络中设备的标识,不容易记忆,可以使用主机名     本地回环地址127.0.0.1    广播地址X.X.X.255   2.端口号:用于标识进程的逻辑地址,是不同进程的标识。      有效端口号:0-65535,其中0-1024是系统使用或者保留端口   3.传输协议:通讯的规则,常见协议:TCP UDP     常见网络架构:   C/S:clientserver   特点:   1.程序员需要开发客户端和服务端   2.维护麻烦   3.将一部分运算移到客户端来完成,减轻服务器端的压力   B/S:browserrver   特点:   1.程序员只需要开发服务端。客户端使用系统已有的浏览器即可   2.维护简单,只需维护服务端   3.所有的运算都在服务端完成   目前流行B/S   端口:物理端口   逻辑端口--软件应用程序的数字标识     传输协议:   TCP传输控制协议   面向连接,可靠的协议   需要建立连接,所以效率低   通过三次握手建立连接      UDP数据报文包协议   无连接,不可靠的协议   不需要建立连接,所以效率高   每个数据报大小限制在64K内   UDP分为发送和接收   TCP分为客户端和服务端      Socket:是网络服务提供的一种机制,通信的两端都需要由Socket,数据在两个Socket之间通过IO传输,网络通信其实就是Socket之间进行通信,网络传输只能传输字节数据。

       下面是网络通讯的简单流程图

              

       1 TCP传输控制协议:

       面向连接,可靠的协议        需要建立连接,所以效率低        通过三次握手建立连接

       Socket:客户端socket        ServerSocket:服务器socket        TCP是面向连接的、可靠的传输协议,如果在没有服务端的情况下,客户端发送数据,会抛错,这种情况是不允许的

      下面介绍一些如何通过三次握手建立连接:

       

     a.请求端(通常称为客户)发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号(ISN,在这个例子中为1415531521)。这个SYN段为报文段1。      b.服务器发回包含服务器的初始序号的SYN报文段(报文段2)作为应答。同时,将确认序号设置为客户的ISN加1以对客户的SYN报文段进行确认。一个SYN将占用一个序号      c.客户必须将确认序号设置为服务器的ISN加1以对服务器的SYN报文段进行确认(报文段3)     这三个报文段完成连接的建立。这个过程也称为三次握手(three-way handshake)     SYN是同步序号,用来发起一个连接     

     然后通过四次挥手断开连接

     a.现在的网络通信都是基于socket实现的,当客户端将自己的socket进行关闭时,内核协议栈会向服务器自动发送一个FIN置位的包,请求断开连接。我们称首先发起断开请求的一方称为主动断开方。      b.服务器端收到请客端的FIN断开请求后,内核协议栈会立即发送一个ACK包作为应答,表示已经收到客户端的请求      c.服务器运行一段时间后,关闭了自己的socket。这个时候内核协议栈会向客户端发送一个FIN置位的包,请求断开连接      d.客户端收到服务端发来的FIN断开请求后,会发送一个ACK做出应答,表示已经收到服务端的请求     FIN表示发送端完成发送任务(即断开连接)     ACK表示确认序号有效        2 UDP数据报文包协议:       无连接,不可靠的协议       不需要建立连接,所以效率高       每个数据报大小限制在64K内       DatagramSocket:表示用来发送和接收数据报包的套接字       DatagramPacket:此类表示数据包       数据包分为发送数据包和接收数据包       凡是发送数据包,参数都是带着地址的       UDP是无连接不可靠的协议,所以在没有接收端的情况下,发送端可以发送数据,且不会抛错,只不过是数据发丢了

转载请注明原文地址: https://www.6miu.com/read-75407.html

最新回复(0)