linux网络编程基础-网络基础

网络应用程序设计模型

  • C/S模式

客户机(client)/服务器(server)模式。需要在通讯两端各自部署客户机和服务器来完成数据通信。

  • B/S模式

浏览器(browser)/服务器(server)模式。只需在一端部署服务器,而另外一端使用每台PC都默认配置的浏览器即可完成数据的传输。

  • 优缺点

                   C/S模式

优点缺点
数据缓存本地,效率高工作量大,开发周期更长
可以采用自定义协议(开发灵活)客户端安装本地,有安全隐患



                   B/S模式

优点缺点
标准浏览器做客户端,开发工作量小使用第三方浏览器,因此网络应用支持受限
采用浏览器显示数据,因此移植性非常好,不受平台限制缓存数据不尽如人意,从而传输数据量受到限制
采用标准http协议进行通信,协议选择不灵活

网络分层模型

在这里插入图片描述

数据包封装

在这里插入图片描述

  • 以太网帧格式

在这里插入图片描述

  • 其中的6字节的源地址和目的地址是指网卡的硬件地址(也叫MAC地址
  • 类型字段有三种值,分别对应IP数据报、ARP请求/应答、RARP请求/应答。帧尾是CRC校验码。
  • 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP和RARP数据包的长度不够46字节,要在后面补填充18字节(PAD),最大值1500称为以太网的最大传输单元(MTU)。

ARP数据报格式

  • ARP协议作用:获取下一跳的mac地址
  • ARP数据报的格式如下所示:
    在这里插入图片描述
  1. 硬件类型:指链路层网络类型,1为以太网。
  2. 协议类型:0x0800为IP协议。
  3. 硬件地址长度:mac地址(6字节)。
  4. 协议地址长度:ip地址(4字节)。
  5. op字段为:1表示ARP请求,2表示ARP应答。
  • 过程:在发送之间知道自己mac地址自己ip对方ip
    (1)以太网首部目的地址:全为ff(表示广播)。
    (2)28字节的arp请求中目的以太网地址由于发送前是不知道的,全填0。
    (3)连接的所有设备接收到请求之后,开始匹配ip,和自己相同,则填上mac地址,返 回给源主机(返回的数据格式的源和目的与第一次相反,此时自己是发送端)


  • IP段格式

在这里插入图片描述

  • IP各个字段的含义(IP数据报的首部长度和数据长度都是可变长的,但总是4字节的整数倍。)
    (1)版本号:IP数据报使用的IP协议版本。目前Internet中使用的主要是TCP/IP协议族中版本号为4的IP协议。


    (2)头部长度:此域指出整个报头的长度(包括选项),4位首部长度的数值是以4字节为单位的,最小值为5,也就是说首部长度最小是4x5=20字节(常用),4位能表示的最大值是15,也就是说首部长度最大是60字节


    (3)总长度:总长度是整个数据报(包括IP首部和IP层payload)的字节数。


    (4)TTL:源主机为数据包设定一个生存时间,比如64,每过一个路由器就把该值减1,如果减到0就表示路由已经太长了仍然找不到目的主机的网络,就丢弃该包,因此这个生存时间的单位不是秒,而是(hop)。


    (5)上层协议标识:IP协议可以承载各种上层协议(是TCP、UDP、ICMP还是IGMP),目标端根据协议标识就可以把收到的IP数据报送到TCP或UDP等处理此报文的上层协议了。


    (6)头部校验和:用于协议头数据有效性的校验,可以保证IP报头区在传输时的正确性和完整性。头部检验和字段是根据IP协议头计算出的检验和,它不对头部后面的数据进行计算。


    (7)源IP:占用32位二进制数,表示发送端IP地址
    (8)目标IP:占用32位二进制数,表示目的端IP地址


  • UDP数据报格式

在这里插入图片描述
16位UDP长度(头部+数据)

  • TCP数据报格式

在这里插入图片描述

NET映射

局域内的私网Ip 访问公网:局域网连接的公网路由器中有NET映射表,将局域网内的ip+端口(8080)映射成公网的ip+端口(10000)

打洞机制

   (1)路由器保护机制:对于陌生的IP第一次发送的数据包会屏蔽
   (2)需要公网IP去打洞,使得两个客户端之间直接传送,不需要经过服务器

socket

   (1)ip+port:网络环境唯一标识进程
   (2)socket成对出现
   (3)一个文件描述符指向两个缓冲区:读和写

因此可以用Socket来描述网络连接的一对一关系。套接字通信原理如下图所示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值