网络编程
一、软件开发的架构
B/S架构
B/S架构即浏览器和
二、OSI七层协议
互联网的本质就是一系列的网络协议,这个协议就叫OSI协议(一系列协议),按照功能不同,分工不同,人为的分层七层。实际上这个七层是不存在的。没有这七层的概念,只是人为的划分而已。区分出来的目的只是让你明白哪一层是干什么用的。
每一层都运行不同的协议。协议是干什么的,协议就是标准。
实际上还有人把它划成五层、四层。
七层划分为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
五层划分为:应用层、传输层、网络层、数据链路层、物理层。
四层划分为:应用层、传输层、网络层、网络接口层。

物理层
提供一个物理连接接口(网线口 无线网卡)
数据链路层
① 规定了电信号的分组方式
② 使用以太网协议,规定了每一台计算机都必须有一块网卡,并且该网卡上都会有一个mac地址,该mac地址由十二位十六进制数组成,前六位代表了生产厂商,后六位代表了流水线号。
每一台计算机的mac地址都是独立的,类似于身份证一样。
有了mac地址后,计算机就可以在一个局域网内进行通信了,mac地址不能跨局域网传输,如果想要在互联网内通信,必须使用到一个硬件路由器,然后使用ip就能够连接多个局域网实现局域网之间的数据传输。
网络层
网络层定义了一个ip协议,接入互联网的计算都必须有一个IP地址用于唯一标识。
该ip协议有两个版本:
ivp4版本 0.0.0.0 到 255.255.255.255
ivp6版本 能够表示出地球上每一粒沙子

传输层
传输层的由来:网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,然后大家使用的都是应用程序,你的电脑上可能同时开启qq,暴风影音,等多个应用程序,
那么我们通过ip和mac找到了一台特定的主机,如何标识这台主机上的应用程序,答案就是端口,端口即应用程序与网卡关联的编号。
① 端口协议
端口范围:范围:0~65535
注意:0~1024系统默认需要使用的端口号, 1024~8000常见软件端口号,所以我们在开发时一般都是用8000以后的端口
② TCP协议
流式协议、可靠协议
数据发送后,等接收端反馈后才会将数据删除,如果接收端一致没有反馈,则会继续发送,如果长时间一直没有反馈,才会将数据删除并停止发送。
三次握手(建立连接)
1.第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;
2.第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态;
3.第三次握手:客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。
完成了三次握手,客户端和服务器端就可以开始传送数据。
四次分手(断开连接)
1.第一次分手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;
2.第二次分手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我也没有数据要发送了,可以进行关闭连接了;
3.第三次分手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入CLOSE_WAIT状态;
4.第四次分手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。
至此,TCP的四次分手就这么愉快的完成了。
③ UDP协议
不可靠协议
数据发送没有通道的概念,发送出去就会将本地的数据删除。
应用层
规定应用程序的数据格式,都是人为自定义的协议标准,可遵循或不遵循。





浙公网安备 33010602011771号