zoukankan      html  css  js  c++  java
  • 计算机基础

    1.c/s结构

    客户端                         服务端

    Client                                     Server

    操作系统                               操作系统

    硬件                                         硬件

    网卡(网线)-交换机-路由器-...(网络)网卡

    2.什么是网络

    网络:底层的物理链接介质加上互联网协议 ,互联网协议相当于计算机界的英语

    OSI七层:(Open System Interconnection)

    • 1.应用层
    • 2.表示层
    • 3.会话层
    • 4.传输层
    • 5.网络层
    • 6.数据链路层
    • 7.物理层

    TCP/IP五层                     四层

    • 1.应用层           1.应用层
    • 2.传输层           2.传输层
    • 3.网络层           3.网络层
    • 4.数据链路层     4.接口层
    • 5.网络层

    3.五层协议详解:
    物理层:       电信号:01010101101 a - 97

    数据链路层:

    对电信号 分组 使数字有意义 分组协议 = Ethernet协议 = 以太网协议 -> 网卡 mac地址(唯一的) mac(同一个子网)
    head(18字节 = 6 源地址(mac) 6 目标地址(mac) 6 数据的描述) + data mac_head + ip_head + data
    以太网的工作模式: 广播 --> 以太网基于mac地址的广播的方式来完成数据的传递 --> 只能在局域网完成 局域网才能找对对方

    网络层:      

    IPv4 IPv6 head(IP头 源地址+目的地址) + data iphead+data ip(哪一个子网) iphead + heac(tcp/udp) + data
    ip + mac 就能找到全世界中唯一的计算机 ip->找到哪一个子网 mac->找到具体哪一台机器
    ARP 协议 把ip地址解析成mac地址

    传输层:      

    tcp + udp 格式: head(tcp/udp) + data tcp/udp 基于端口工作的 端口:0 - 65535 一个软件一个端口 0-1024给操作系统使用的
    ip+端口 就能找到全世界范围内的唯一一个软件 head(tcp) + head(应用头) + data
    服务端最好一直对外提供 服务端的端口和ip要捆绑固定 不能随便变 客户端的端口可随便变

    应用层          暴风 qq ... 软件 格式: head(应用头)+data 应用协议:http/ftp...

    五层串起来:--->: 应用层产生数据head(固定长度)+data -> 传输层 -> 网络层 - > 数据链路层 -> 物理层

    4.传输层详解:
    tcp: 流式协议; 像水流一样发送数据,管道流数据 双向管道 c--->s c<---s 没有数据前 就先建管道
    挖管道:
             1.client 发个请求 要挖了 c--->s # syv=1 发请求 icq=x 序列号 数据包的编号
             2.server 回应了 可以 并且我也要挖一条 确认+ 请求 s-->c # ack=1 + x 确认 syv=1 发请求 icq = y
             3.client 回应了 可以 c-->s s-->c 成功 三次握手 # ack=1 + y 确认
    tcp是可靠传输 s得到包之后回应收到 c没收到确认信息 就在传一遍 所以叫可靠传输
    断开链接:
            1.client 发请求 要断开了 fin=1
            2.server ack=1 确认 注:这里不能发请求要断开 因为不确定s->c数据是否传完了
            3.server 发请求 要断开了 fin=1
            4.client ack=1 确认
    udp: 没通道 client 一直发数据 不需要 对方回应 一直发 断电了或者网络出问题 client 不管 所以不可靠
    tcp:  可靠       对方给了确认收到信息,才发下一个,如果没收到确认信息就重发
    效率: tcp  可靠     效率低
             udp 不可靠 效率高 不需要建管道 不需要等待对方回

    5.socket编程:

    socket 是什么?
    Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,
    它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
    所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。
    socket 就是 == 片面说: ip + 端口
    socket两大家族(两种套接字的类型):
              1.基于文件类型的套接字家族 AF_UNIX 一台机器上 两个软件通信
              2.基于网络类型的套接字家族 AF_INET 基于网络通信
    socket工作流程:

  • 相关阅读:
    移动端工作心得
    小程序初探
    你可能会用到的"奇技赢巧"
    一个知乎日报pwa
    Progressive Web Applications
    Java中的基本数据类型以及装箱、拆箱
    用sql获得指定记录的空段数目和字段名称--实在想不通,这种场景应用在哪
    putIfAbsent,一个字段为空的话,将该字段设置为指定值
    PO、VO、BO、POJO、DAO、DTO都是什么对象
    Java中字符串连接符(+)和append的区别
  • 原文地址:https://www.cnblogs.com/Mryang123/p/8679090.html
Copyright © 2011-2022 走看看