网络编程

软件开发架构:

​ C/S: client/server

​ 客户端/服务端架构:例如手机app,电脑exe应用程序

​ B/S: browser/server

​ 浏览器/服务器: 例如网站、小程序、支付宝各种服务

​ 服务端24小时不间断服务

远程通信条件

1、物理连接介质

2、公共的协议、标准:OSI七层协议

​ open system interconnection

OSI七层协议

应、表、会、传、网、数、物

OSI五层协议:

应用层:

1、HTTP协议

2、FTP协议

传输层

TCP协议:
1、流式协议、可靠协议

为什么可靠?有反馈机制,发送消息后,等待对方回应后,才会将数据从内存中清除。如果对方没有回应,在一段时间内,会隔段时间就继续发送请求,知道对方回应。

2、基于TCP协议,必须建立双向通道

客户端请求服务端,需要建立一条通道,服务端回应客户端表示收到,需要建立一条通道。

3、三次握手

所谓三次握手,指建立一个TCP协议时,需要客户端和服务端共发送三个包。

三次握手的目的:

1、明确双方收、发能力正常

2、连接服务器指定端口,建立TCP连接

3、交换TCP窗口信息

流程:

  • 第一次握手(SYN=1, seq=x):

    客户端发送一个TCP的SYN标志位置1的包,指明客户端打算连接的服务器的端口,并置发送序号为X

    发送完毕,客户端进入 SYN_SEND 状态

  • 第二次握手(SYN=1, ACK=1, seq=y, ACKnum=x+1):

    服务端发回确认包 (ACK) 应答,即SYN和ACK标志位均为1。并置发送序号为Y,再确认序号为X+1。

    发送完毕,服务端进入 SYN_RCVD 状态。

  • 第三次握手(ACK=1, ACKnum=y+1):

    客户端再次发送确认包(ACK),SYN标志位为0,ACK标志位为1,把服务器发来的发送序号加1并放在确定字段中发送给对方。

    发送完毕,客户端进入 ESTABLISHED 状态,服务器接收到这个包时,也进入到ESTABLISHED状态。TCP握手结束。

4、四次挥手

为什么叫四次挥手?TCP的连接的拆除需要发送四个包,因此也称为四次挥手。也称为改进的三次握手。

客户端和服务器均可主动发起挥手动作。

  • 第一次挥手(FIN=1, seq=X)

    客户端想关闭连接时,发送一个FIN标志位置为1的包。表明已没数据可发,但可接收数据。

    发送完毕,进入 FIN_WAIT_1 状态

  • 第二次挥手(ACK=1, ACKnum=X+1)

    服务器端确认客户端的FIN包,发送一个确认包(ACK)。表明收到请求,但没准备好关闭。

    发送完毕,服务器端进入 CLOSE_WAIT 状态,客户端收到确认包后,进入 FIN_WAIT_2 状态,等待服务器端关闭连接。

  • 第三次挥手(FIN=1, seq=y)

    服务器端准备关闭连接,发送结束请求给客户端。FIN置为1

    发送完毕,服务器端进入 LAST_ACK 状态,等待来自客户端的最后一个ACK

  • 第四次挥手(ACK=1, ACKnum=y+1)

    客户端接收到服务器端的关闭请求,发送一个确认包,并进入 TIME_WAIT 状态,等待可能出现的要求重传的ACK包。

    服务器接收到确认包,关闭连接,进入CLOSED状态。

    客户端等待某个固定时间,没收到服务器端的ACK包,认为服务器端已正常关闭,于是自己关闭,进入CLOSED状态。

网络层

ip协议

规定进入互联网的计算机必须拥有一个ip地址

特点:点分十进制

​ 地址动态分配

两版本:ip4

​ ip6: 计算机太多,ip4不够用,出现ip6

最小:0.0.0.0

最大:255.255.255.255

数据链路层

  • 规定电信号分组方式
  • 规定计算机必须有网卡:世界唯一编号MAC地址
  • 计算机通信靠吼!

物理层

基于电信号传输的二进制数据

原文地址:https://www.cnblogs.com/KbMan/p/11312790.html