zoukankan      html  css  js  c++  java
  • 网络编程

    1.计算机基础:
    学python 写程序软件 eg:

    暴风 qq word ... 应用软件 间接控制硬件

    操作系统windows/linux... 系统软件 控制程序 让硬盘 内存 cpu 运转起来

    计算机硬件 硬件 硬盘 内存 cpu 网卡

    2.c/s架构
    客户端 服务端
    Client Server

    操作系统 操作系统

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

    3.网络是什么?
    网络:底层的物理链接介质+ 互联网协议(计算机界的英语)
    1.连网线
    2.标准 全球用 互联网协议 互联网协议就是计算机界得英语 所有计算机都能通信
    OSI七层:(Open System Interconnection)
    1.应用层 ...
    2.表示层 ...
    3.会话层 作文
    4.传输层 语法
    5.网络层 单词
    6.数据链路层 字母
    7.物理层 英标
    TCP/IP五层 四层
    1.应用层 1.应用层
    2.传输层 2.传输层
    3.网络层 3.网络层
    4.数据链路层 4.接口层
    5.网络层

    4.五层协议详解:
    物理层 电信号: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 -> 传输层 -> 网络层 - > 数据链路层 -> 物理层

    5.传输层详解:
    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 不可靠 效率高 不需要建管道 不需要等待对方回应

    6.网络编程/scoket 编程:
    参考: http://www.cnblogs.com/linhaifeng/articles/6129246.html
    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工作流程:





  • 相关阅读:
    shp转geojson
    Vue如何使用$refs
    Cesium加载轨迹
    Nodejs调用Python函数时传递参数
    JavaScript字符串截取:截取'final:'之后的字符串,然后再按照“,”分割。。
    Cesium平移操作
    架空输电线路障碍物巡检的无人机低空摄影测量方法研究
    cesium沿着路线飞行
    业界常用四种命名法则
    电脑优化
  • 原文地址:https://www.cnblogs.com/alice-bj/p/8607739.html
Copyright © 2011-2022 走看看