HTTP TCP UDP ICMP IP ARP 协议详解(10.15 第二十一天)
ARP协议
ARP(Address Resolution Protocol)协议 地址解析协议
把网络层的IP地址翻译成在数据链路层寻址的48位硬件地址(MAC地址)
在OSI模型中ARP协议属于链路层;而在TCP/IP模型中,ARP协议属于网络层。
IP协议
IP数据包首部的固定部分中的字段含义
(1)版本。占4位,值IP协议的版本。通信双方使用的IP协议版本必须一致。目前版本号是4(IPv4)
(2)首部长度。占4位,单位是4字节,首部长度默认是20字节,所以填充的数字为0101
(3)区分服务。占8位,用来获得更好的服务,但实际上基本没使用过
(4)总长度。占16位,指首部和数据之和的长度,单位位字节。长度为16,数据包最大长度为(2的16次方-1),但是受数据链路层协议的影响总长度不能超过最大传送单位MTU为1500字节
(5)标识。占16位,当IP数据包长度超过MTU时候,进行分片,在每一个分片数据包使用相同的标识,用来接收方进行数据包重组
(6)标志。占3位,只有前两位有意义
最低位置MF(More Fragment),当MF=1时表示后面还有分片
中间位置DF(Don‘t Fragment),意思是不能分片,当DF=0时才允许分片
(8)生存时间。占8位,英文缩写TTL(Time To Live),表示数据包在网络中的寿命。目的是防止数据包无法到达目的地无限制的在互联网兜圈子,大量消耗网络资源。设置一定的初始值,每经过一个路由器减一,TTL=0时,路由器丢弃数据包
(9)协议。占8位,指出数据包使用的是哪种协议
(10)首部校验和。占16位,数据包每经过一个路由器,都要重新计算一下首部校验和,经过一系列运算,判断数据包的首部是否发生变化,如果发生变化就路由器丢弃数据包。
(11)源IP地址。占32位
(12)目的IP地址,占32位
ICMP协议
ICMP(Internet Control Message Protocol)网际报文控制协议
用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。大部分网络检修技巧和工具都是基于ICMP的(也就是ping)
简单点说,ICMP常用于寻找网络故障
运输层的两个主要协议:
(1)传输控制协议TCP(Transmission Control Protocol)
(2)用户数据包协议UDP(User Datagram Protocol)
区别:
(1)TCP提供面向连接的服务。文件分段,在传送数据前必须先建立会话,进行流量控制,保证可靠传输
(2)UDP传输之间不需要建立连接,不提供可靠交付,简单点说就是发送出去就不管了。适合一个数据包就能完成通信,或者对丢包了没必要重传的应用。
传输控制协议TCP(Transmission Control Protocol)
是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议
数据包结构:
(1)源端口和目的端口。各占2字节
(2)序号。占4字节,序号范围是(0,2的32次方-1),序号到达最大之后又回到0。在一个TCP连接中传送的字节流中每一个字节都按顺序编号。起始序号必须在连接时候设置。首部中的序号字段指本报文段所发送数据的第一个字节序号。例如,一报文段的序号字段值是301,携带的数据共有100字节。表明第一个字节序号是301,最后一个字节序号是400,下一段报文从401开始
(3)确认号。占4字节,是期望收到对方下一个报文段的第一个数据字节的序号。
(4)数据偏移。占4位,单位时4字节,记录TCP报文第多少位开始是数据部分
(5)保留。占6位,目前没有使用
(6)紧急URG。当URG=1时,表明紧急指针有效。告诉系统此报文有紧急数据,应尽快传送,并把数据包插入到本报文段数据的最前面,比如ctrl+c
(7)确认ACK。TCP规定,在连接建立之后所有传送的报文段都必须把ACK设置位1
(8)推送PSH。尽快发送
(9)复位RST。当RST=1时,表明TCP连接出现了严重差错(由于主机崩溃或者其他原因),必须释放连接,重新建立一个连接
(10)同步SYN。用在TCP建立连接时使用。
(11)终止FIN。用来释放一个TCP连接。
(12)窗口。占2字节,窗口值是(0,2的16次方-1),表明对方现在允许发送的数据量,而且在动态变化。
(13)校验和。
(14)紧急指针。占2字节,仅在URG=1时有效,指出本报文段的紧急数据的字节数。
(15)选项。长度可变,最长为40字节
TCP的连接建立-三次握手
SYN/ACK 标识号 seq 序号 ack 确认号
TCP的连接释放-四次挥手
HTTP协议:(转载自公众号山丘安全攻防实验室 https://mp.weixin.qq.com/s/YhYIVuDDmAMgKSduin5OHQ)
HTTP协议简介
HTTP(超文本传输协议)是应用层上的一种客户端/服务端模型的通信协议,它由请求和响应构成,且是无状态的。(暂不介绍HTTP2)
- 协议
协议规定了通信双方必须遵循的数据传输格式,这样通信双方按照约定的格式才能准确的通信。
- 无状态
无状态是指两次连接通信之间是没有任何关系的,每次都是一个新的连接,服务端不会记录前后的请求信息。
- 客户端/服务端模型
五层网络模型
URL构成
用了这么久,你注意过吗?
协议内容
请求(Request)
客户端发送一个HTTP请求到服务端的格式:
- 请求行
- 请求头
- 请求体
响应(Response)
服务端响应客户端格式:
- 状态行
- 响应头
- 响应体
状态码
HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:
更详细的状态码可查看 HTTP状态码
但一般我们只需要知道几个常见的就行,比如 200,400,401,403,404,500,502.
请求方法
截止到HTTP1.1共有下面几种方法:
请求和响应常见通用头
注意
Content-Type,内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件。
常见的媒体格式类型如下:
以application开头的媒体格式类型:
常见请求头
常见响应头
总结
这一点在前后端联调接口最明显,当你在应用中去请求其他接口或转发请求时这些也是要知道的。不然出现问题的概率会大大提高。
HTTP TCP UDP ICMP IP ARP 协议详解(10.15 第二十一天)的更多相关文章
- ARP协议详解之Gratuitous ARP(免费ARP)
ARP协议详解之Gratuitous ARP(免费ARP) Gratuitous ARP(免费ARP) Gratuitous ARP也称为免费ARP,无故ARP.Gratuitous ARP不同于一般 ...
- ARP协议详解之ARP动态与静态条目的生命周期
ARP协议详解之ARP动态与静态条目的生命周期 ARP动态条目的生命周期 动态条目随时间推移自动添加和删除. q 每个动态ARP缓存条目默认的生命周期是两分钟.当超过两分钟,该条目会被删掉.所以,生 ...
- ARP协议详解RARP
简单来说,ARP协议是IP地址转换成MAC地址的协议.链路层协议.过程如下: 1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系. 2:当源主机要 ...
- ARP协议详解
ARP协议:地址解析协议,将IP地址映射到MAC地址. ARP缓存:每个主机都有存储IP地址和MAC地址的缓冲区.每条记录最长生存时间为10分钟,如果一条记录2分钟没有使用,则会被删除.如果始终在使用 ...
- Tcp端口以及端口相关协议详解
http://www.codeweblog.com/tcp%e5%b8%b8%e7%94%a8%e7%ab%af%e5%8f%a3/
- centos Linux系统日常管理2 tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课
centos Linux系统日常管理2 tcpdump,tshark,selinux,strings命令, iptables ,crontab,TCP,UDP,ICMP,FTP网络知识 第十五节课 ...
- 【转载】TCP /IP协议详解
首先,TCP/IP不是一个协议,而是一个协议族的统称. 里面包括了IP协议,IMCP协议,TCP协议,以及http.ftp.pop3协议等等. TCP/IP协议分层 提到协议分层,我们很容易联想到IS ...
- TCP /IP协议详解【转】
转自:https://www.jianshu.com/p/0cf648510bce?utm_campaign=maleskine&utm_content=note&utm_medium ...
- TCP/IP协议详解---概述
工作之后,才发现以前在学校里学的东西忘得太快太干净了,现在需要一点点地捡起来了,要不然写几行程序会闹很多笑话会出现很多bug的.从今天开始,翻一翻<TCP/IP协议详解 卷1>这本 ...
随机推荐
- hadoop的扩容
一.横向扩容(参见:https://www.cnblogs.com/yangy1/p/12362565.html) 现在在此基础上再添加一个节点 1.克隆一台主机hdp03(克隆hdp02) 修改ip ...
- golang Context for goroutines
概要 goroutine 的控制 取消控制 超时控制 goroutine 之间的传值 总结 概要 golang 的提供的 channel 机制是基于 CSP(Communicating Sequenc ...
- redis集群JedisCluster连接关闭问题
JedisCluster连接关闭问题 set方法为例 //伪代码 JedisCluster jedisCluster = new JedisCluster(); jedisCluster.set(&q ...
- Anaconda下的 Jupyter Notebook 安装 多python环境
装完 Anaconda 会自带一个pyhon环境 也会自带Jupyter Notebook 可以点击开始中的Jupyter Notebook 打开 浏览器 我这里是 3.x 想要装个2.7 的 ...
- 三 Road
3—5年程序员的发展和出路在哪里? 是继续做技术人,还是向管理者发力?是继续留在大公司,还是转投潜力小公司?如果没有核心竞争力,入行一两年的新程序员朋友是可以替代你大部分工作的,而且薪资还低,要怎么办 ...
- switch不能case字符串
改用if(){ }else if(){ }
- C# 控制台应用程序从外部传参运行和调试
参考:/*十有三博客*/ 新建一个用于演示的控制台应用程序项目,然后在Program.cs的入口Main方法里编写如下代码 foreach (var arg in args) { Console.Wr ...
- python矩阵运算大全(linalg模块)
python矩阵的运算大全 python矩阵运算可以用numpy模块,也可以用scipy模块,主要运算包括以下几种: #1-1python矩阵运算所需模块 import numpy as npimpo ...
- LeetCode1029 两地调度(贪心+java自定义排序回顾)
题目: 公司计划面试 2N 人.第 i 人飞往 A 市的费用为 costs[i][0],飞往 B 市的费用为 costs[i][1]. 返回将每个人都飞到某座城市的最低费用,要求每个城市都有 N 人抵 ...
- ruby资料
源码样例 链接: https://pan.baidu.com/s/1mh55bFM 密码: 6cjy 初级代码 链接: https://pan.baidu.com/s/1hschnUW 密码: 8n1 ...