TCP/IP五层模型

  • 应用层:负责应用程序之间的数据沟通;HTTP/FTP
  • 传输层:负责端与端之间的数据传输;TCP/UDP
  • 网络层:负责地址管理和路由选择;IP、路由器
  • 链路层:负责相邻设备之间的数据传输;Ether、交换机
  • 物理层:负责广电信号的传输;以太网协议、集线器

应用层

HTTP协议(超文本传输协议)
url:就是我们俗话说的网址
url解析:
在这里插入图片描述
url编码:url中特殊字符有特殊的含义,用户输入提交的数据中存在特殊字符的话,需要转码(每个字节转换为16进制的字符串)为了标记数据经过转码,会在前面加%
url解码:对%后面紧跟的两位字符都需要转码,第一位转换为数字左移四位,与第二位转换后的数据相加
例子:
C++(+在编码后变成了2B,解码:(‘2’ - ‘0’)<< 4 +(‘B’ - ‘A’ ) + 10 43就是+);
HTTP协议的格式:
首行:

  • 请求首行:请求方法,url,协议版本
    请求方法:(GET/POST)get没有正文,提交的数据在url的查询字符串中
    协议版本:0.9/0.0/1.1/2
  • 响应首行:协议版本,响应状态吗,状态码描述信息

响应状态码:

  1. 1**信息性的状态码(100,接受的请求正在处理)
  2. 2**成功状态码(200服务器成功的处理了请求)
  3. 3**重定向状态码(301永久性重定向,302暂时重定向)
  4. 4**客户端错误状态码(404服务器未找到请求的网页)
  5. 5**服务器错误状态码(500服务器内部出错)

头部:以一个个key:val组成的键值对,并且各个键值对之间以\r\n作为间隔
Content-Length:body的长度/Transfer-Ecoding:chuncked(一边产生数据,一边发送数据)
Content-Type:text/html;charset=UTF-8(数据类型)
3**/Location(重定向地址)
Cookie(客户端生成的) session(服务器生成的)
空行: \r\n --用于间隔头部与正文 通过\r\n\r\n识别头部结尾

传输层

TCP/UDP

网络层

协议头的格式:
IP协议字段图

  • 4位版本号:指定Ip协议的版本,对于IPV4来说就是4
  • 4位头部长度:IP头部的最大长度是15(以4字节位单位)
  • 8位服务类型:3位优先权字段,4位TOS字段(最小延时/最大吞吐量/最高可靠性/最小成本),和1位保留字段(必须置为0)
  • 16位报文长度:限制一个IP报文最大长度64K udp数据最大长度:64k - 20 - 8;
  • 16位标识:udp数据有可能在网络层进行数据分片,这个标识则可以指定当前分片属于哪个udp数据包
  • 3位标志:1位弃用,1位标识是否禁止分片末尾
  • 13位片偏移:用于指定udp数据分片相对于udp数据包其实为止的偏移量(分片在数据包中的位置)偏移量是以8为单位,每个分片都是8的整数倍(除最后一个分片)
  • 8位ttl:报文生命周期,最大经过的路由器跳数
  • 8位上层协议:用于数据分用时,决定由上层哪个协议进行解析
  • 16位校验和:校验数据一致性
  • 32位源/目的IP地址:标识数据从哪来到哪去
  • 40字节选项数据

MTU:最大传输单元
当mtu< udp数据长度<64K-20-8时,链路层则不支持大于mtu大小数据传输,这时候网络先获取下层mtu大小,在网络层对数据进行分片

网段划分:
IP地址分为两个部分:网络号和主机号

  • 网络号:保证相互连接的两个网段具有不同的标识
  • 主机号:同一网段具有相同的网络号,但是必须有不同的主机号
  • 不同的子网就是把网络号相同的主机放一块
  • 如果在子网中新增一台主机,则这台主机的网络号和子网的网络号一致,但是主机号不能和子网中的其他主机重复

在网络中的IP地址不能随意分配,因为随意分配很容易造成IP地址冲突;因此IP地址需要得到合理的管理才可以
一个路由器可以组建一个局域网,这时候路由器向局域网中的主机分配IP地址的时候,就必须带有自己的网络的标识–网络号;这时候只需要将每个网络的网络号规范起来就可以避免IP地址冲突
在一个局域网中,路由器向主机分配IP地址,还有能够在局域网中标识这个主机,这个标识叫主机号
IP的组成:网络号+主机号
保证相临的网络不能具有相同的网络号就可以尽可能避免IP地址冲突
网段的划分:
早期划分方式:A/B/C/D/E

  1. A类地址:低24位是主机号 A类网络地址主机号有2^24 个0.0.0.0~127.255.255.255
  2. B类地址:低16位是主机号 类网络地址主机号有2^16(65536)个 128.0.0.0~191.255.255.255
  3. C类地址:低8位是主机号 类网络地址主机号有256个 192.0.0.0~223.255.255.255
  4. D类地址:224.0.0.0~247.255.255.255
  5. E类地址:240.0.0.0~247.255.255.255
    现在解决方案-CIDR:加入了一个字段叫子网掩码,通过子网掩码来对网络进行划分
    子网掩码:
    由一串连续的二进制1组成的一个无符号4个字节的整数
    192.168.122.132 - 255.255.255.0
    作用:子网掩码与IP地址相与能够得到网络号 192.168.122.132 & 255.255.255.0 = 192.168.122.0
    子网掩码取反,可以得到网络主机号的个数 ~255.255.255.0 = 255 + 1 = 256,
    现有一个C类网络地址(192.168.122.132),将这个C类网络划分位20个子网,每个子网的子网掩码是(255.255.255.247),IP地址范围是多少(192.168.122.0 ~192.168122.7、192.168.122.8 ~192.168122.15…),以及各自的网络号(192.168.122.0 、192.168.122.8…)

在一个网络中,并不是所有的主机号都能分配给主机

  1. 主机号全为0的IP地址–网络号,用于标识一个网络
  2. 主机号全为1的IP地址–udp广播地址
  3. 127.0.0.1 本机虚拟回环网卡地址—用于本机的网络测试
  4. 在RFC1918中进行规定,用于组建私网的网段也不能随意使用

只有以下几个网段能够用于组建私网:10...* 172.16..~172.31.. 192.168..
相邻的网络不能使用相同的网络号
路由选择:在复杂的网络环境中为每一条数据都选择一条合适的路径

链路层

负责相邻设备之间的数据传输;Ether;交换机
链路层协议字段:源mac地址,目的mac地址
mac地址:网络物理硬件地址,用于标识硬件设备
mtu对tcp协议的影响:
tcp在传输层的时候就会获取mtu大小进行计算得到自己的mss大小,并在三次握手时与对方进行协商,取其中较小的一个作为传输大小,发送数据的时候从发送缓冲区中取出的数据大小就不会大于mss大小;tcp在传输层会自动进行数据分段,因此不会在网络层进行数据分片
mtu对udp协议的影响:
因为udp在传输层不会进行数据分段,因此当udp传输的数据大小大于mtu但是小于64k-20-8的时候,数据会在网络层进行数据分片,分片了在对端就会进行分片重组,只要有一个分片出现问题,都会导致整个udp数据报被丢弃;因此对于udp来说分片越多,传输就越危险,
因此用户在应用层进行udp数据分包的时候最好就将数据大小控制在mtu - 20-8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值