网络编程 互联网协议 tcp原理

软件开发架构

​ 开发软件,必须要开发一套 客户端 与 服务端

​ 客户端与服务端的作用

​ 服务端:24小时不间断提供服务

​ 客户端:如果想要找服务,就去服务端

软件开发架构分两种

C/S架构:

​ Client:客户端

​ Server:服务端

优点:

​ 软件的使用稳定,并且可以节省网络资源。

缺点:

​ 1.若用户想要在同一个设备上使用多个软件,必须下载多个客户端。

​ 2.软件的每次更新,客户端也必须跟着重新下载更新

c/s架构的软件:

​ 例如:电脑上的qq,pycharm等,手机端的微信,王者荣耀等

B/S架构:

​ Browser:浏览器

​ Server:服务端

优点:

​ 以浏览器充当客户端,无需用户下载多个软件,与也无需用户下载更新软件版本,直接在浏览器上访问需要使用的软件

缺点:

​ 消耗网络资源过大,当网络不稳定时,软件的使用也会不稳定。

b/s架构的软件:
例如:在浏览器上输入某个软件的域名

网络编程

网络发展历史

​ 所有先进的技术都源自于军事,希望通过远程获取数据,所以出现了‘网络编程’。

​ 早期如何实现远程通信:

​ 打电话—》电话线

​ 电脑—》网线,有线网卡

​ 笔记本电脑—》有线网卡,无线网卡

​ 要实现远程通信必须具备:

​ 1.物理连接介质—》网卡

​ 2.互联网协议:

​ 人与人之间沟通的介质:中文,英语

​ 计算机之间沟通的介质:“互联网协议”

互联网协议

​ 互联网协议又称网络七层协议,osi七层协议

OSI七层协议:

-应用层

-表示层

-会话层

-传输层

-网络层

-数据链路层

-物理连接层

物理连接层

​ 基于电信号发送出二进制的数据0101010101

数据链路层

​ 数据链路层的 “以太网协议”,专门用于处理基于电信号发送出的二进制的数据

​ 以太网协议

​ 1.规定好电信号数据的分组方式。

​ 2.每台连接网线的电脑都必须要有一块“网卡”

​ 网卡有不同的厂商生产的

​ 每块网卡都会有世界上独一无二12位的编号’“mac”地址。前六位:厂商号 后六位:流水号

​ 交换机:

​ 可以让多台电脑连接到一起。

​ 基于以太网协议发送数据:

​ 特点:

​ 广播,单播

​ 缺点:

​ 广播风暴,不能跨局域网通信。

​ 互联网:
​ 让局域网之间进行通信

网络层

IP地址:用于标识唯一的一台计算机(局域网)的地址

IP:点分十进制

​ 最小值:0.0.0.0

​ 最大值:255.255.255.255

IPV4(了解):

​ 一开始用电脑的人不多,所以出现了IPV4的协议版本

IPV6(了解):

​ 包括IPV4

本机IP:回环地址 127.0.0.1——》localhost

传输层

TCP/UDP协议,基于端口工作的。

-端口号:标识电脑上的某一个软件

-端口号范围:0-65535

注意:

​ 1.操作系统中,一般0-1024的端口都被默认使用了(0-1024不要动)

​ 2.尽量使用8000以后的端口号 8001

开发中常用软件的默认端口号:

​ mysql:3306

​ mongodb:27017

​ Django:8000

​ Tomcat:8080

​ Flask:5000

​ Redis:6379

若想服务端与客户端进行通信,必须要建立连接,产生双向通道。

一条是客户端往服务端发送信息的。

另一条是服务端往客户端发送信息的

应用层

http

ftp

总结

ip :用于唯一标识某台计算机的位置。

port:端口用于确认计算机上的一个应用软件。

ip+port:世界上某台电脑上的一个应用软件

TCP协议的工作原理:

-TCP是一个流式协议

1585465262592

-三次握手,四次挥手

​ -三次握手键连接:

1585465306755

​ 建立双向通道,建立好连接

​ -listen:监听

​ -established:确认请求连接

​ -发送数据:

​ write

​ read

​ 客户端往服务端发送数据,数据存放在内存中,需要服务端确认收到,数据才会在内存中释放调,否则,会而一段时间发送一次,让服务端返回确认收到。在一段时间内,若服务端还是不反悔确认收到,则取消发送,并释放内存中的数据。

-四次挥手断连接

​ -TIME_WAIT:时间等待

1585465368037

原文地址:https://www.cnblogs.com/zqfzqf/p/12592369.html