HTTP 协议

[[Internet]] [[HTTP]] HTTP 协议 HTTP 简介 HTTP 协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,基于 TCP/IP 通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。 HTTP 协议工作于客户端-服务端架构(C/S)上。浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 WEB 服务器发送所有请求。 Web 服务器有:Apache 服务器,IIS 服务器(Internet Information Services)等。 HTTP 默认端口号为 80,但是你也可以改为 8080 (代理服务器)或者其他端口。 HTTP 消息结构 客户端请求消息(请求头) 客户端发送一个 HTTP 请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,如下图: 1、请求行 请求行由请求方法字段、URL 字段和 HTTP 协议版本字段 3 个字段组成,它们用空格分隔。比如: GET /data/info.html HTTP/1.1 方法字段就是 HTTP 使用的请求方法,比如常见的 GET/POST/HEAD。HTTP1.1 新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。 URL 统一资源定位符 HTTP 协议版本有两种:HTTP1.0/HTTP1.1。 2、请求头部 大多数请求头并不是必需的,但 Content-Length 除外。对于 POST (向服务器提交数据)请求来说 Content-Length 必须出现。 ...

IBM x3650 m4 服务器网卡问题

Linux [[Server]] [[Hardware]] IBM x3650 m4 服务器网卡问题 问题描述 Bios 中显示四个网口都是正常 connected 状态。 系统为 Ubuntu 18.04 server 后,进入系统四个网口名为:eno2,eno3,eno4,eno5,且只有 eno3 可用。 有两台这个型号的机器,原先第一台出现这问题,我认为是其他三个网口坏了,但是第二台机器问题一模一样,让我产生了探究的心情。 解决过程 先从系统层面来看,手动配置 ip 信息,但无论怎么样网络都不会起变化,我也傻了,只有重启后才改变了网络(重启还导致了一个 glibc 的问题),但一直只有 eno3 可以连通。 再从硬件层面来看,先确认四个网口都可以连通(通过 Bios 里的数据查看),但是一进系统就只有一个口可以闪烁,去查下 IBM 的文档吧。 从文档和搜索结果来看,只想了 IMM 这个东西,也就是 Integrated Management Module。 最后经过一系列的操作,确实从这里解决了问题。 解决方案 简单版 开机按 F1 进入到 Bios,进入到 System Settings–>Integrated Manager Module 选择 Reset IMM to Defaults,然后确定,注意此时机器风扇会全负荷工作,噪音比较大 等声音消失就可以重启了 复杂版 开机按 F1 进入到 Bios,进入到 System Settings–>Integrated Manager Module–>Network Configuration 更改 Network Interface Port 为 Dedicated,Fail-Over Rule 为空 然后移动到最底下保存,提示要等几分钟,那就等吧(凭感觉就可以重启了) 重启完了过后,进入系统,这时候可能所有网口都不能用了,但不要怕,通过 ip a 查看结果,观察网卡是否有这些数据 <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000,关注到这个 noop,我们可以通过如下的方法启动它,并 DHCP 分配地址,但是重启后又会消失。 ...

IP 命令的使用和解释

Linux Network IP 命令的使用和解释 ip 是网络架构中不可缺少的概念。这里的 ip 指的是 Linux 的命令,查看 man 的结果,ip - show / manipulate routing, network devices, interfaces and tunnels,可见这个命令可以控制路由,网络设备,网卡和隧道。 使用 Usage: ip [ OPTIONS ] OBJECT { COMMAND | help } ip [ -force ] -batch filename where OBJECT := { link | address | addrlabel | route | rule | neigh | ntable | tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm | netns | l2tp | fou | macsec | tcp_metrics | token | netconf | ila | vrf | sr } OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] | -h[uman-readable] | -iec | -f[amily] { inet | inet6 | ipx | dnet | mpls | bridge | link } | -4 | -6 | -I | -D | -B | -0 | -l[oops] { maximum-addr-flush-attempts } | -br[ief] | -o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] | -rc[vbuf] [size] | -n[etns] name | -a[ll] | -c[olor]} 常见对象 object link 网络设备 address ip地址 addrlabel label configuration for protocol address selection route 路由 neigh arp 或者 NDISC 缓存条目管理 ntable 临近网络操作管理 tunnel 基于 IP 的隧道 tuntap TUN/TAP 设备管理 maddress 多播地址 mroute 多播路由缓存条目 mrule 多播路由策略数据库里的规则 monitor 查看 netlink 信息 xfrm IPSec 策略管理 netns 网络命名空间管理 l2tp 基于 IP 的隧道网络 tcp_metrics tcp 指标管理 token 标记的接口认证管理 常见参数 -V, -Version 显示ip命名的版本信息 -h, -human 显示人可以看懂的信息 -s, -stats 输出更多信息 -d, -details 输出更详细的信息 -f, -family 指定协议簇,可选值有 inet, inet6, bridge, ipx, dnet, mpls 或者 link -4, shortcut for -family inet -6, shortcut for -family inet6 -B, shortcut for -family bridge -c, -color 带颜色的输出 -o, -oneline 单行显示 常用命令 ip address [show] 显示 IPv4 或者 IPv6 的地址信息 ip address show up 仅展示打开的网络设备的地址信息 ip address show dev eth0 展示 eth0 设备的地址信息 ip address add 192.168.1.1/24 dev eth1 将 ip 地址赋予 eth1 ip address delete 192.168.1.1/24 dev eth1 删除 ip 地址 ip address flush dev eth4 scope global 删除所有 eth4 的所有全局 IPv4 和 IPv6 的地址 ip a 的解析 ip a 也就是 ip addr,通过它可以查看很多信息。 ...

jenkins 使用

[[Jenkins]] jenkins 使用 安装 记住安装git命令,否则无法连接到 git 仓库。 需要安装make,glibc-static,git,go 连接 参考:https://docs.gitlab.com/13.10/ee/integration/jenkins.html 有两种方式进行连接: Setting –》 Intergrations –》 Jenkins CI Setting –》 Intergrations –》 WebHook 但这两个都出现了一些问题: jenkins CI 在 13.11 版本之前都有bug,无法配置。 WebHook 出现 Invalid Token 问题 Invalid Token:https://github.com/jenkinsci/gitlab-plugin/issues/718

Kaggle 的使用

Linux Kaggle 的使用 下载 先确认是否有 python3 环境。 apt install python3-pip pip install kaggle 注册账号 进入 Kaggle 选择 Register,进行注册确认。 有了账号后,进入 https://www.kaggle.com/<username>/account, 选择 Account,往下找到 API,选择 Create New API Token。会自动下载一个 kaggle.json 文件。 把这个 kaggle.json 上传到需要下载数据的机器的 ~/.kaggle/ 下,保证 ~/.kaggle/kaggle.json 文件存在。 下载数据 根据 Curated Datasets for the Slingshot Competition,也就是认证的可用数据集进行下载,下载的语句大致是: kaggle datasets download -d <owner>/<dataset-name> -p /data/ 例如下载 COVID-19 Open Research Dataset 的数据到 /data 目录下,就可以: kaggle datasets download -d allen-institute-for-ai/CORD-19-research-challenge -p /data

Linux Bond 配置(Ubuntu 18.04)

Linux Network Linux Bond 配置(Ubuntu 18.04) Linux bonding驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余。 七种模式 俗称 配置简称 英文名 中文名 解释 bond0 balance-rr Round-robin policy 平衡轮询策略 传输数据包顺序是依次传输,直到最后一个传输完毕,此模式提供负载平衡和容错能力。 bond1 active-backup Active-backup policy 活动备份策略 只有一个设备处于活动状态。一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得。此模式提供了容错能力。 bond2 balance-xor XOR policy 平衡策略 传输根据 (源MAC地址 xor 目标MAC地址) mod 设备数量 的布尔值选择传输设备。 此模式提供负载平衡和容错能力。 bond3 broadcast Broadcast policy 广播策略 将所有数据包传输给所有设备。此模式提供了容错能力。 bond4 802.3ad IEEE 802.3ad Dynamic link aggregation IEEE 802.3ad 动态链接聚合 创建共享相同的速度和双工设置的聚合组。此模式提供了容错能力。每个设备需要基于驱动的重新获取速度和全双工支持;如果使用交换机,交换机也需启用 802.3ad 模式。 bond5 balance-tlb Adaptive transmit load balancing 适配器传输负载均衡 通道绑定不需要专用的交换机支持。发出的流量根据当前负载分给每一个设备。由当前设备处理接收,如果接受的设 备传不通就用另一个设备接管当前设备正在处理的mac地址。 bond6 balance-alb Adaptive load balancing 适配器负载均衡 包括mode5,由 ARP 协商完成接收的负载。bonding驱动程序截获 ARP在本地系统发送出的请求,用其中之一的硬件地址覆盖从属设备的原地址。就像是在服务器上不同的人使用不同的硬件地址一样。 mode0,mode2 和 mode3 理论上需要静态聚合方式 bond1,mode5 和 mode6 不需要交换机端的设置,网卡能自动聚合 bond4 需要支持 802.3ad,配置交换机 目的 整合两个千兆网口,将速率突破 1000 Mb/s。决定使用 bond6 实现。 ...

Linux OOM Killer 机制

Linux Linux OOM Killer 机制 最近在做一项测试,总内存 256 GB,当程序“吃”了 200 G左右内存的时候就突然中止了。通过查找 dmesg | egrep -i -B100 'killed process',发现有个 out of Memory killed 将这个测试程序干掉了,这就是 Linux 的 OOM Killer 机制。 由于 按需分配物理页面,所以程序可以预先获取很多的虚拟内存,当真的有数据需要填充才会分配物理内存;当多个进程真的要用这些内存了,系统发现物理内存不够用了,就启动 OMM killer 机制。这个机制简单的理解就是,内存不够用,找个内存消耗最高的干掉就好了(实际情况比较复杂)。 遇到这种问题,三个思路去处理: 增加物理内存(或虚拟内存) 查看程序是否有内存消耗 bug 系统层面配置 OOM Killer 机制 系统层面配置 OOM Killer 机制 这里又分为两个思路,要么提升 killer 执行时的阈值,要么降低 killer 执行力度。 Overcommit 配置 这里的配置项,控制内存的申请量。 在 Linux 中,可以通过内核参数 vm.overcommit_memory 去控制是否允许 overcommit: 默认值是 0,在这种情况下,只允许轻微的 overcommit,而比较明显的 overcommit 将不被允许。 如果设置为 1,表示总是允许 overcommit。 如果设置为 2,则表示总是禁止 overcommit。也就是说,如果某个申请内存的操作将导致 overcommit,那么这个操作将不会得逞。 那么对内核来说,怎样才算 overcommit 呢?Linux 设定了一个阈值,叫做 CommitLimit,如果所有进程申请的总内存超过了 CommitLimit,那就算是 overcommit 了。在/proc/meminfo中可以看到 CommitLimit 的大小: ...

Linux 下使用 swap 文件系统

Linux file system Linux 下使用 swap 文件系统 检查 swap 空间,先检查一下系统里有没有既存的 swap 文件 swapon -s 如果返回的信息概要是空的,则表示 swap 文件不存在。 确定 swap 文件的大小,单位为 M。将该值乘以 1024 得到块大小。例如,64MB 的 swap 文件的块大小是 65536。 创建 swap 文件,下面使用 dd 命令来创建 Swap 文件。 dd if=/dev/zero of=/swapfile bs=1024 count=4194304 【参数说明】 - if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file > - of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file > - bs=bytes:同时设置读入/输出的块大小为bytes个字节 - count=blocks:仅拷贝blocks个块,块大小等于bs指定的字节数。 创建好 swap 文件,还需要格式化后才能使用。运行命令: mkswap /swapfile 激活 swap ,运行命令: swapon /swapfile 如果要机器重启的时候自动挂载 swap ,那么还需要修改 fstab 配置。 echp '/swapfile swap swap defaults 0 0' >> /etc/fstab 当下一次系统启动时,新的 swap 文件就打开了。 ...

Linux 中出现 Read-only file system

Linux Linux 中出现 Read-only file system 当 Linux 操作系统启动出现 root 用户也无法进行任何的文件写操作时,无论什么用户(包括 root)写文件保存或者删除文件,且对操作文件或目录都有写权限时,还任然报错: E212: Can't open file for writing 或者 Read-only file system。 这种情况下,已经不是权限的问题了,更大的可能是因为当前的文件系统进入了只读模式,所以不能进行写操作。 重新挂载根目录 # 让“/”根文件系统重新挂载并有可读写模式 $ sudo mount -o remount rw / 修复磁盘 # 对报错分区进行检测并尝试修复 $ sudo fsck -y /dev/sda1 转载信息 版权声明:本文为CSDN博主「Aidon-东哥博客」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/u010839779/java/article/details/77062347

Linux 文件权限和 MacOSX 上特殊的权限

Linux [[MacOS]] Linux 文件权限和 MacOSX 上特殊的权限 讲在前头 一般的,互联网相关的工作,如果 jd 上写了熟悉 Linux 开发,那么去面试(初中级)的时候肯定会问到文件权限相关的问题,我一度认为自己足够了解了,仔细看了下相关的资料,还差了一些距离,同时现在更换了开发环境,发现 MacOSX 的权限和 Linux 的文件权限有略微区别,就在此记录下来。 Linux 文件权限的展示 通过 ls -l 输出结果, drwxr-xr-x light staff 1.2 KB Fri Jul 19 14:58:12 2019  . drwxr-xr-x light staff 816 B Mon Jun 24 15:25:52 2019  .. .rw-r--r-- light staff 8 KB Wed Feb 13 11:34:02 2019  .DS_Store .rw-r--r-- light staff 3.1 KB Tue Jun 18 14:42:46 2019  2019-01-01-some-skills.md .rw-r--r-- light staff 9.6 KB Tue Jun 18 14:42:55 2019  2019-01-02-单元测试浅析.md .rw-r--r-- light staff 2.8 KB Tue Jun 18 14:43:12 2019  2019-01-03-argparse学习.md 可以看到输出结果最左边一列,类似于 -rwxrwxrwx 十个字符就是文件的权限信息。 ...