网络协议基础
网络协议基础
网络分层协议
网络协议分层
- 应用层
- 传输层
- 网络层
- 数据链路层
- 物理层
应用层
我们直接能够接触到的,我们的手机我们的电脑使用的软件就是在引用层
应用层只需要专注于为用户提供应用功能,不去关心数据是如何传播的就类似于,我们寄快递的时候,只需要把包裹交给快递员,由他负责运输快递,我们不需要关心快递是如何被运输的。而且应用层是工作在操作系统中的用户态,传输层及以下则工作在内核态
传输层
有两个协议TCP(Transmission Control Protocol)和UDP
大部分应用使用的正是 TCP传输层协议,比如 HTTP 应用层协议。
TCP保证了数据能可靠的传输给对方。应用需要传输的数据可能会非常大,如果直接传输就不好控制,因此当传输层的数据包大小超过MSS(TCP 最大报文段长度) ,就要将数据包分块,这样即使中途有一个分块丢失或损坏了,只需要重新发送这一个分块,而不用重新发送整个数据包。在 TCP 协议中,我们把每个分块称为一个
TCP段(TCP Segment)UDP只是简单的发送不会保证对方是否接受到
当设备作为接收方时,传输层则要负责把数据包传给应用,但是一台设备上可能会有很多应用在接收或者传输数据,因此需要用一个编号将应用区分开来,这个编号就是端口。比如80端口通常是Web服务器用的,22端口通常是SSH远程登录服务器用的。而对于浏览器(客户端)中的每个标签栏都是一个独立的进程,操作系统会为这些进程分配临时的端口号。
由于传输层的报文中会携带端口号,因此接收方可以识别出该报文是发送给哪个应用。说白了就是用于区分不同的信息有不同的去处
网络层
网络层并不负责将数据从一个设备传输到另一个设备
只需要服务好应用即可,让其作为应用间数据传输的媒介,帮助实现应用到应用的通信,而实际的传输功能就交给下一层,也就是
网络层(InternetLayer)网络层最常使用的IP协议
IP 协议会将传输层的报文作为数据部分,再加上IP 包头组装成 IP 报文,如果 IP 报文大小超过 MTU(以太网中一般为 1500 字节)就会再次进行分片,得到一个即将发送到网络的 IP 报文。
为了查询地址方便,需要将IP地址分成两种意义
- 网络号:标识网络号是属于哪个子网
- 主机号:标识同一个子网下的不同的主机
怎么分的呢?这需要配合子网掩码才能算出 IP 地址 的网络号和主机号。那么在寻址的过程中,先匹
配到相同的网络号,才会去找对应的主机。
除了寻址能力, IP 协议还有另一个重要的能力就是路由。实际场景中,两台设备并不是用一条网线连接起来的,而是通过很多网关、路由器、交换机等众多网络设备连接起来的,那么就会形成很多条网
络的路径,因此当数据包到达一个网络节点,就需要通过算法决定下一步走哪条路径。IP 协议的寻址作用是告诉我们去往下一个目的地该朝哪个方向走,路由则是根据「下一个目的地」选择路径。寻址更像在导航,路由更像在操作方向盘
数据链路层
- 一旦数据需要跨网络传输,就需要有一个设备同时在两个网络当中,这个设备一般是路由器,路由器
可以通过路由表计算出下一个要去的 IP 地址。 - 每一台设备的网卡都会有一个 MAC 地址,它就是用来唯一标识设备的。路由器计算出了下一个目的地
IP 地址,再通过 ARP 协议找到该目的地的 MAC 地址,这样就知道这个 IP 地址是哪个设备的了。
物理层
- 主要他提供二进制的传输协议服务
IP详解
IP基础知识
IP的作用
TCP/IP处于第三层网络层
网络层的作用:实现主机与主机之间的通信,也叫点对点通信
IP和MAC的关系
MAC负责实现直连的两个设备之间的通信,而IP负责没有直连的两个网络中
在网络中数据包传输中,源IP地址和目标IP地址在传输过程中是不会变化的,只有源 MAC 地址和目标 MAC 一直在变化。
IP地址基础知识
IPV4
是由32为01组成的4组01,也就是说每一各组就是8位IP地址的分类,分成了5类,A,B,C,D,E
只有A,B,C类才会分,网络号和主机号
判断分类
私有IP
IP协议相关技术
跟 IP 协议相关的技术也不少,接下来说说与 IP 协议相关的重要且常见的技术。
- DNS 域名解析
- ARP 与 RARP 协议
- DHCP 动态获取 IP 地址
- NAT 网络地址转换
- ICMP 互联网控制报文协议
DNS域名解析
DHCP 动态获取 IP 地址
工作流程
其他知识点
url和uti
url的固定的语法
protocol://[[user[:password]@]host[:port]][/path][?query][#fragment]
[协议名]://用户名:密码@主机名:端口/路径?查询参数#片段ID也就是说一个url常见的的组成是:
协议名
域名
端口
https默认的端口是443
http默认的端口是80
/后面表示的是路径
?后面表示的参数
例如:
https://en.wikipedia.org:443/wiki/Hypertext_Transfer_Protocol?id=123#HTTP/1.1_response_messages
uri 统一资源标识符
下面是uri和url的关系
http客户端请求信息
http请求四个部分组成
- 请求行
- 请求头部
- 空行
- 请求正文
请求方法
就是在请求行一个部分的字符
GET 请求获取Request-URI所标识的资源
POST 在Request-URI所标识的资源后附加新的数据
HEAD 请求获取由Request-URI所标识的资源的响应消息报头PUT 请求服务器存储一个资源,并用Request-URI作为其标识
DELETE 请求服务器删除Request-URI所标识的资源
TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
CONNECT 保留将来使用,HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
PATCH 用于将局部修改应用到资源。(由 RFC 5789 指定的方法)- get主要和post 的区别
- get负责字符传输,传参的时候是url里面传参数
- post负责流媒体等超文本的传输,使用字节传输
- get主要和post 的区别
五大http状态码
- 100 继续
- 200 成功
- 302 跳转,重定向
- 404 访问资源不存在
- 403 访问不允许
- 405 请求方式不允许
- 5XX 服务器错误
HTTP
基本概念
HTTP 是超文本传输协议,也就是HyperText Transfer Protocol
http常见的字段
host
客户端发送请求的时候,用来指定服务器的域名
host: www.a.com
Content-Length
表明本次回应的长度是多少
Connection
是否是TCP持久通信
Content-Type
高速客户端本次的数据是什么格式
Content-Encoding
说明数据的压缩方法
其他
Content-Encoding
通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态
post提交数据的几种Content-Type
- application/x-www-form-urlencoded:最常见的POST提交数据方式,浏览器支持的原生form 表单
- multipart/form-data:这种方式一般用来上传文件
- application/json:在响应头中很常见,在请求头中用来告诉服务端消息主体是序列化后的json 字符串