网络编程与并发编程

一. 软件开发架构

1. 定义

        什么是网络编程:我们需要编写一些基于网络传输的一些软件,而我们目前所学的都是基于本地的,不是基于网络的。我们的目的就是要让我们的项目写好之后给所有人使用,既然是所有人使用,那么就必须得把我们所写的项目上传至互联网,那么别人想使用我们的项目软件,那我们就必须开发一款客户端,然后让用户在自己的电脑上下载客户端来使用。下载完成后,还需要一个服务端,通过服务端检验后在进行注册登录等一系列的功能。            

        client(客户端)——————网络传输——————服务端

像这种的我们一般称这种架构为c/s架构

        当我们需要下载大量软件时,会过多的占用我们大量的资源,客户端和服务端将会出现问题 ,因此这个时候,就有人开发出了浏览器,其实浏览器也是客户端,而且他还是个万能的客户端。

        服务端的特征:

                    1. 24小时不间断的提供服务
                    2. 服务端要有一个公网IP(服务器部署、它就是另外一台计算机,系统:Linux系统, centos、乌班图等)
                    3. 常见的服务器:阿里云、腾讯云、百度云、华为云等。

2. OSI七层协议(互联网通信协议)

        1. 什么是网络和上网:

        上网就是上传和下载数据的过程

网络背景:

在早期时,世界范围内的计算机是不能够进行互相通讯的,当时只是在局域网中通讯,后来又在广域网中通讯,这就是互联网。

        网络的组成:物理连接设备(路由器,交换机,网线等)+计算机界中的英语(互联网的通讯协议)

互联网通信协议(osi七层协议):

        互联网的本质就是一系列的协议,这个协议就叫osi协议,按照功能的不同,分工不同

人为的有七层,但是实际上是不存在这七层的,没有这个概念,只是人们自己这样理解划分的,原因就是让我们明白每一层是干什么的。

        什么是协议:协议就是标准

        1.划分成七层的有:应用层,表示层,会话层,传输层, 网络层,数据链路层,物理层

        2.划分为五层的有:应用层,,传输层,网络层, 数据层,数据链路层,物理层

        3. 划分成四层的有:应用层,传输层,网络层,网络接口层

1. 物理层

物理层:他是传吗用来发送高低电频的,其实就是二进制,物理层单纯的发送电频是没有意义的,因为接受的人并不知道是什么意思,所以,需要对发送的电频进行分组,但是物理层却做不了分组。

2. 数据链路层

数据链路层: 他就是专门对物理层发送过来的数据链路层进行分组,使用的是ethernet以太网协议。

一组电信号构成一个数据报,叫做帧,或者叫数据帧,数据帧的组成:

head 包含(固定的18个字节)

发送者/源地址,6个字节

接受者/目标地址,6个字节

数据类型,6个字节

数据类型的具体内容:haed长度+date长度=最短64个字节,最长的字节有1518个字节,超过最大限制就分片发送

mac地址:以太网协议规定每个接入互联网的设备必须要一个网卡,发送端和接收端的地址

每块网卡出厂时就已经有了唯一的mac地址了,长度为48的2进制,通常由12位的16进制表示(前六位是厂商编号,后六位是流水线号)。

3. 网络层

网络层:这层使用的是ip协议,规定每一个接入互联网的计算机都必须要有一个ip地址,网络层中的数据我们称为数据包。

        ip地址的组成格式:

                                分为IPv4和IPv6,目前大多数用的都是IPv4,但是由于IPv4的地址即将耗尽,所以其他的场景下都开始使用IPv6了。

        IPv4: 0.0.0.0.------255.255.255.255    

         公网ip:需要购买的,阿里云、腾讯云的,人家或给你一个公网ip地址,固定的,不会变。172.0.1.200
    内网ip:192.168开头的地址基本上都是局域网中得ip地址

     

如何查看自己的IP地址:windows:cmd+ipconfig

                                        linux:(macos)ifconfig

通过一个ip地址就可以知道所在的局域网,IP+mac地址是可以确定世界上的任意一台计算机,原因是:arp协议,他可以通过你的IP地址计算出mac地址。

本地回环地址:127.0,0.1

192.168.1.252 127.0.0.1  localhost 

4. 传输层

使用的是TCP协议,或者UDP协议,他也称之为端口协议,一个端口可以代标一个应用程序端口的范围:0--65535

        0---1024是自己计算机系统所使用端口,1024--8000是常用软件使用的端口,

我们自己开发软件时,端口一般选择8000--65535,同一个端口只能代表一个应用软件,端口不能有冲突,软件一旦关闭,那么就会释放这个端口,这样别的应用程序就可以使用了。

常见的一些端口号:

应用程序:     FTP        TFTP        TELNET        SMTP        DNS      HTTP     SSH     MYSQL

 端口               20,21          69                25              23           53          80         22         3306

传输层协议:  TCP        UDP              TCP              TCP        TCP    TCP      TCP        TCP

5. 应用层

        Application App

这层是离用户最近一次,比如QQ,微信,支付宝等这些都是应用,都是在应用层。

1. 客户端:用什么协议都可以,自己开发的软件,自己选择。

2. 浏览器: 按照浏览器规定的协议去使用,浏览器使用的HTTP协议。

3.HTTP协议:示例:

  https://www.baidu.com/

协议://域名/v1/v2?参数

HTTP协议是明文传输,不安全,而https是密文传输,相比http更安全,但是相比http速度比较慢而且https协议是需要申请的

域名解析:DNS服务器就是来解析域名的,域名的本质就是ip地址,域名比ip好记忆,最终的结果还是把域名变为ip地址

域名解析地址:1.先解析本地的hosts文件

                         2.去对应的平台域名表中查找 

TCP协议和UDP协议

客户端与服务端:

客户端要给服务端发消息需要建立链接才可以TCP协议也称为可靠协议(三次握手),流式协议(发送数据可以分多次发送)

三次握手:建立联系

四次挥手:   断开链接

客户端给服务端发送请求后,服务端再给客户端返回信息。

客户端可以有多个而服务端只有一个        

面试题:
    1. TCP协议的可靠性,是因为建立了双向通道?
            不是。是因为TCP协议的反馈机制
    2. 四次挥手能不能省略为三次挥手?
  
UDP协议:
    它不可靠、是因为它不建立链接,没有三次握手、四次挥手
     速度快
远程控制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值