网络编程

一、软件开发架构

1.c/s架构(client/server)

c:客户端

s:服务端

c/s架构主要运用于如QQ这样的应用程序,只有QQ相关方面的功能

2.b/s架构(brower/server)

b:浏览器

c:服务端

b/s架构主要是运用于浏览器这样的应用程序,因为我们可以通过浏览器这个程序来访问网页上的资源,

目前如支付宝,微信这样的应用程序里都会有其他应用程序的功能,这也是使用了b/s架构

服务端:24小时不间断提供服务
客户端:需要使用的时候就会向服务端发起请求,服务端就会给客户端提供服务

 

二、网络编程发展史

任何先进的技术最早都来源于军事,

想要实现远程通信第一个具备的条件时需要物理连接介质(笔记本电脑需要网卡这个物理介质)

计算机与计算机之间需要实现远程通信除了物理介质,还需要一套公共的标准/协议

 

三、OSI协议

OSI七层模型

OSI七层协议

应用层
会话层
表示层
传输层
网络层
数据链路层
物理连接层

 

1.物理连接层

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

2.数据链路层

①规定电信号的分组方式

②规定了任何一台接入互联网的计算机都必须有一块网卡,每一块网卡都刻着世界上独一无二的编号

网卡上具有12位16进制数:

前六位是厂商编号

后六位是流水线编号

这12位数又称为mac地址

结合以上两点合称为“以太网协议”

交换机就是基于“以太网协议”通信的,不能跨局域网通信

互联网就是由n个局域网彼此连接组成的

早期:联机

以太网:局域网与交换机

3.网络层

IP协议

规定了只要是接入互联网的计算机都必须有一个IP地址,用来唯一标识接入互联网的一台计算机

IP地址的特点:点分十进制,点分十进制就是IPV4的IP地址表示方法,

IPV4中用4个字节表示一个IP地址,每个字节按十进制表示为0~255,

也就是用4个从0~255的数字,来表示一个IP地址,如192.168.1.1

IP地址最小:0.0.0.0

IP地址最大:255.255.255.255

IP地址有两个版本:IPV4 IPV6

IP地址是动态分配的:当启动计算机的时候,计算机会获取一个IP地址,如果重启了又会重新获取新的IP地址

4.传输层

计算机与计算机之间其实就是应用程序与应用程序之间的通信

TCP/UDP都是基于端口工作的协议

端口(prot):设备与外界通讯交流的出口,用来唯一标识一台计算机的某个应用程序

端口的范围:0~65535

通常0~1024都是操作系统默认使用的端口号,建议使用8000之后的端口

MYSQL默认端口:3306

Redis默认端口:6379

django默认端口:8000

flask默认端口:5000

端口号也是动态分配的,某个应用程序第一次启动端口号是8666,

如果将此程序关闭,再次启动,那么它的端口号又会改变

5.应用层

HTTP协议

FTP协议

 

 

TCP协议

流式协议,可靠协议

基于TCP协议通信必须先建立双向通道

 

TCP协议传输数据之所以可靠的原因在于双向通道吗?

不对,是因为它有一个反馈机制

比如客户端需要请求服务端发送某个东西,客户端收到了会返回消息告诉服务端,如果客户端没有返回消息给客户端,服务端中还备份了客户端所需要的东西,那么服务端会在一定的时间内每隔一段时间在次发消息给客户端,直到客户端回消息告诉服务端,如果在这一定的时间内客户端还没回消息,那么服务端回自动删除这个东西。

 
三次握手与四次挥手

三次握手连接:

首先,客户端访问服务端,需要建立一个通道,那么服务端建立一个通向客户端的通道,在建立通向客户端的同时还需要建立一个回应客户端的通道,所以在通向客户端的通道与回应客户端的通道可以合并成一条通道,同时进行;

那么客户端收到服务端的消息也需要回应服务端,所以还需要建立一条回应服务端的通道,

所以就是三次建立连接。

四次挥手连接:

首先,客户端已经不需要从服务端获取数据了,就会建立一个通道告诉服务端,服务端也会建立一个通道回复客户端,所以第一条通信通道就断了;

然后服务端还会检测是是否还有未发完的数据,然后将数据发送给客户端,客户端收到后会回复服务端,断开第二次连接。

 

原文地址:https://www.cnblogs.com/xiongying4/p/11311814.html