网络编程

 概要
 
  1. 软件开发架构
    1. c/s架构
    2. b/s架构
  2. 网络编程
  3. 计算机网络常见硬件
    1. 交换机
    2. 路由器
  4. OSI七层协议(# 所有的计算机都必须要有这七层)
 
 
 
 
 
 
详细
 
1 软件开发架构
 
  • c/s架构(client/server)
    • 服务端需具备特性
      • 24小时不间断提供服务(24小时监听)
      • 固定的地址(IP地址)
      • 能够服务多个用户(高并发)
    • 手机各种app其实就是各大软件的客户端
  • b/s架构((browser/server)
    • 浏览器统一充当各个服务端的客户端
    • 本质上也是cs架构
  • 开发软件需掌握
    • 开发cs架构的软件(简易版本): 需掌握网络编程
    • 开发bs架构软件:需掌握-'并发编程、前端、数据库、后端框架'
 
2 网络编程
 
  1. 是要做什么
    • 研究程序之间的数据通信
  2. 想实现远程数据交互需有
    1. 有物理连接介质
    2. 数据无障碍交互的标准->OSI七层协议
  3. 发展史<设备-物理连接介质>
    1. 有线电话-电话线
    2. 无线电话-信号发射器
    3. 大屁股电脑-网线
    4. 笔记本电脑-网卡
 
 
3 计算机网络常见硬件
 
  • 交换机:能够使接入该机器的所有计算机之间彼此互联
    • 局域网:由交换机组成的网络
  • 路由器:能够连接多个局域网并实现局域网之间的数据传输
    • 路由功能: 把数据从一个子传输到另一个子网,因此路由具有判断网络地址和选择ip路径功能
    • 互联网:可以简单的理解为多个局域网之间彼此互联
 
 
4 OSI七层协议
 
  1. 应用层
  2. 表示层
  3. 会话层
  4. 传输层
  5. 网络层
  6. 数据链路层
  7. 物理连接层
 
  • # 开发层面可以归纳为五层
  • 应用层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理连接层
 
 
1 物理连接层
  • 提供一个物理连接接口(网线口 无线网卡等)
    • 如中继器:  常用于两个网络节点之间物理信号的双向转发工作
      • 就是简单的信号放大器,信号在传输的过程中是要衰减的,中继器的作用就是将信号放大,使信号能传的更远
 
2.数据链路层(应用硬件-交换机)
  1. 规定了电信号的分组方式
    • 背景: 网络上的二级制数据传到电脑后,怎么分组取出然后翻译成人类能读懂的语言->电信号帮你
  2. 以太网协议
    • 规定了计算机必须有一块网卡 并且网卡上面要有一个固定的一串数->mac地址
    • mac地址理解
      • 定义:每台计算机的出厂时写在设备上的一串12位16进制数,相当于该计算机的身份证号码
        • 前六位:产商编号
        • 后六位:流水线号
      • 基于mac地址的数据传输
        • 只能在局域网内传输数据,在互联网数据传输需用ip地址
        • 什么是广播风暴
          • 局域网内的多台计算机同时分别往其他计算机发起发送数据请求,造成交换机处理不过来的现象
 
3 网络层(应用硬件-路由器)
  • ip协议: 规定了接入互联网的计算机都必须有一个IP地址用于唯一标识
    • ip地址
      • 能够唯一标识接入互联网的一台独一无二的计算机
      • IPV4版本
        • 0.0.0.0~255.255.255.255
      • IPV6版本
        • 其数量-能够表示出地球上每一粒沙子
  • 公网IP与私网IP
    • 公网IP需要花钱购买并申请
    • 私网IP自带的但是无法直接基于互联网访问
  • arp协议
    • 将IP地址转换成mac地址(基于网络请求)
 
 
计算机A基于计算机B的ip找见计算机B,计算机B返回给计算机A它的mac地址.
目的是: 下次更快速访问到计算机B
 
4 传输层
 
提供的服务:主机应用程序进程之间端到端的服务
 
4-1 端口(port)
 
总结
    ip+port   127.0.0.1:8080
    能够唯一标识世界上某一台接入互联网的计算机上面的某一个正在运行的应用程序
 
 
端口号
 
定义:
唯一标识"计算机中某个正在运行"应用程序的号码---相当于计算机上应用程序的身份证号码
注意: 端口号在同一计算机同一时刻不能重复,否则外界来的数据要发给哪个应用程序.
 
 
端口号范围:0~65535
 
端口号基本使用
        0~1024系统默认需要使用的端口号
        1024~8000常见软件端口号
        以后我们开发的软件最后使用8000之后的端口号
 
 
4-2 两种协议
 
  • TCP
    • 建立连接: 三次握手
      • 其中重要状态
      • Listen监听态: 监听对方发起的连接请求
      • syn_rcvd态: 回复请求,并建立连接
    • 断开连接: 四次挥手
    • TCP协议可靠原因:
      • 从"发送数据的"过程理解:  数据在内存留一个备份,然后数据发送到对方,这时对方会回传一个ok确认收到,然后发送方会将内存中备份的数据删除;若对方没有回复ok,每间隔一定时间发送一次数据,在规定时间内(如1min内),仍没有回复ok,这时才从内存中删除备份数据;
      • 而UDP数据发出去不管对方有没有收到,就结束了,所以不可靠.
  • UDP
    • 没有通道,数据发出去就结束了
      • 数据包可能在传输中因为某种原因损坏,丢失
      • 对方看不看也跟发送方无关
      • QQ刚出来用的就是这个协议,所以,会有人发出消息,但中途数据包丢失,而对方没有收到消息
  • 注意: 并不是数据传输非要用这些协议,可以不用协议直接传,完全看双方约定
 

TCPUDP比更可靠的原因如下:

 

  -确认和重传机制:TCP使用确认机制来确保数据的可靠传输。接收方在收到数据后会发送确认消息给发送方,如果发送方在一定时间内未收到确认消息,就认为数据丢失,并重新发送数据。这样可以保证数据的可靠性,即使在网络传输过程中出现丢包也能够进行重传,确保数据的完整性。

 

  -顺序控制:TCP保证数据的顺序性,即发送方发送的数据包按照顺序到达接收方。每个数据包都有一个序列号,接收方根据序列号将数据包按正确的顺序组装。如果接收方收到乱序的数据包,它会请求发送方重新发送丢失的数据包,以保证数据的正确顺序。

 

  -流量控制:TCP通过使用滑动窗口机制进行流量控制,确保发送方和接收方之间的数据传输速度匹配。接收方可以根据自身处理能力和接收缓冲区的空闲大小来通知发送方合适的发送速率,避免数据的丢失和拥塞。

 

  -UDP不提供这些机制,因此在可靠性方面不如TCP。但UDP具有简单、快速的特点,适用于一些对实时性要求较高、可容忍数据丢失的应用场景,如实时语音和视频传输

 
应用场景:
TCP: 需要可靠和完整传输的场景
1) 网页浏览
2) 邮件传输
3) 文件传输
4) 数据库访问
 
UDP: 对实时性要求高,但是容忍数据丢失的场景
1) QQ语音
2) DNS域名解析
 
 
TCP协议:
 
 
三次握手: 建立两个单向发送数据的通道
四次挥手: 取消之前建立的两个单向数据传输通道
"三次握手"理解图示1
"三次握手"专业术语图
 
"四次挥手"图示
 
 
7 应用层
 
  • 是人为自定义的协议标准 可遵循可不遵循
  • HTTP协议 FTP协议 ...
 
 
posted @ 2022-01-11 21:38  tslam  阅读(62)  评论(0编辑  收藏  举报