zoukankan      html  css  js  c++  java
  • 网络基础

    网络协议

      用以数据传输的一组规则,常用的网络协议有:
    HTTP:超文本传输协议(Hyper Text Transfer Protocol)是互联网上应用最广泛的一种网络协议;
    TCP: 传输控制协议(Transmission Control Protocol)是一种面向连接的,可靠的,基于字节流的传输层通信协议;
    IP: 因特网互联协议(Internet Protocol)
    UDP: 用户数据报协议(User Datagram Protocol)是OSI参考模型中一种无无连接的传输层协议,提供面向事务的简单不可靠信息传输服务;
    FTP: 文件传输协议(File Transfer Protocol)
    ICMP:Internet控制报文协议(Internet Control Message Protorol)它是TCP/IP的一个子协议,该协议运行于IP主机和路由器之间控制消息;
    IGMP:是Internet组管理协议(Internet Group Management Protocol)它是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由之间;
    ARP: 正向地址解析协议(Address Resolution Protocol)通过已知IP,寻找对应主机的MAC地址;
    RARP:反向地址转换协议,通过MAC地址确定IP地址;
      网络编程就是根据协议规则进行编程,学习网络协议就是学习其规则;
    以太网帧协议:根据MAC地址,完成数据包传输。

    IP地址

    IP地址是网络中主机的标识
      在网络中主机想要与其他机器通信就必须拥有一个自己的IP地址,IP地址为32位(IPV4)或者128位(IPV6)。每一个数据包都必须携带目的地址IP和源IP地址。

    端口号

      端口号用于区分一台主机中接收到的数据包应该转交给哪一个进程进行处理。注意TCP端口号与UDP端口号是相互独立的:
    1- 1023 为UNIX系统占用:比如80端口分配给WWW服务,21端口分配给FTP服务等
    注册端口;
    1024 -49151 分配给进程或者应用:这些端口号在还没有被服务器资源占用时,可以由用户的APP动态注册获得。
    动态端口号49152 - 65535:被称为动态端口号他一般不固定分配某种服务而是动态分配的。

    网络模型分层结构

      如下所示是两个网络模型分层结构,分别是OSI协议七层参考模型和tcp/ip协议参考四层模型,现在的大部分网络都是参考四层模型做的。

      顺口溜:应示会输网数物(OSI),应传网网(TCP/IP)

    如上图所示为数据的封装与传递过程(tcp/ip协议参考五层模型),图片来源为《计算机网络》2008年电子工业出版社出版,作者:谢希仁

    以太网帧格式

      如上图所示,数据的封装与传递在第二层中数据被封装成了以太网帧格式,以太网帧格式如下图所示:其中目的地址和源地址为MAC地址。

      但是需要注意的是,目的地址一开始是不知道的。但是可以在发送数据以前通过ARP请求来获得目的主机的MAC地址,它是以太网帧格式的一种特殊格式,它的类型为0806,如下图所示,需要注意的是数据部分包含了上层封装的各个表头。

      ARP请求通过目的主机的ip地址来找到目的主机,当目的主机收到了ARP请求包后,则发送ARP应答包,在应答包中填入主机需要的MAC地址,源MAC、ip和目的MAC,ip需要换位置,这样主机就获得了目的主机的MAC地址。

    IP协议

      IP协议工作在网络层,网络表头NH其中的一种IP数据报格式,如下所示,图片来源:百度百科IP数据报

      其中:
        版本:ipv4, ipv6
        TTL : time to live 生存时间,为了防止以太网数据帧一直路由不到想要的目的主机,在网络中一直跳,而阻塞网络,便定义了一个TTL,当以太网数据帧每经过一个路由器TTL便减1,将TTL减到0的路由器将会把它抛弃。
        源IP:32位---4字节,点分十进制表示,为一个字符串格式数据。
        目的IP:32位---4字节。
    。。。。后续在编程中使用到了再补充。

    c/s模型和b/s模型

    client-server browser-server
    优点 保存了大量数据,速度快、可自定义协议 安全性较好、跨平台、开发工作量较小
    缺点 安全性差、不能跨平台、开发工作量较大 不能缓存大量数据,严格遵守网络协议
  • 相关阅读:
    C#秘密武器之表达式树
    C#秘密武器之特性
    [转]拷贝构造函数详解
    [转]STL 容器一些底层机制
    C++ Qt多线程 TcpSocket服务器实例
    QByteArray储存二进制数据(包括结构体,自定义QT对象)
    [转]浅谈 C++ 中的 new/delete 和 new[]/delete[]
    [转]QList内存释放
    Subscribe的第四个参数用法
    ROS多线程订阅消息
  • 原文地址:https://www.cnblogs.com/ding-ding-light/p/14284317.html
Copyright © 2011-2022 走看看