深入理解TCP/IP应用层
TCP/IP四层模型分为: 应用层,传输层(只关注起点(发送者)和终点(接收者)),网络层(规划出一条或几条路线),数据链路层(关注两个相邻点之间怎么传输)
| 协议 | ||
| 应用层 | DNS,URI,HTML,HTTP,SSL,SMTP,POP,IMAPTELNET,SSH,FTP,SNMP | 应用程序相关 |
| 传输层 | TCP,UDP,UDP-Lite,SCTP,DCCP | 操作系统内核负责 |
| 网络层 | ARP,IP,ICMP | 操作系统内核负责 |
| 数据链路层 | 网卡层(以太网协议) |
设备驱动程序及 网络接口负责 |
一、应用层:
1、HTTP协议(主要协议):HTTP是超文本传输协议,是当前最流行也是最典型的应用层协议
HTTP还衍生出了封装SSL协议的“安全版”,HTTPS是HTTP协议的安全版,从2015年以后,基本上采用HTTPS,其更为安全,加密
2、HTTP协议的格式:
HTTP协议格式又分为其请求和相应模式
请求模式:
1)首行:方法(GET/POST/HEAD/PUT/DELETE/...)+URL+版本号(HTTP1.1为多数场景下)
2) Content-Length 表示body部分的长度(字节)
Content-Type 表示body部分的数据格式
协议头header:请求的属性,每一行都是一个键值对,键和值之间用": "来分割,每组属性之间用\n分隔
User-Agent:表示操作系统和浏览器的型号
- host 表示客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
- Referer表示当前页面是从哪个页面跳转过来的
- Cookie:用于在客户端存储少量信息. 通常用于实现会话(session)的功能,浏览器存储数据的一种方式(客户端的概念) ,这里面包含身份标识session id内容都是由对应的程序员决定 的,Session是服务器进行描述用户身份信息的方式(服务端的概念)
- location:搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
空行:表示header结束的标记
3)body正文:即协议正文,数据种类非常多样了,也可能body为空(GET请求一般为空,POST请求一般有数据)空行后面的内容都是body,body允许为空字符串,如果body存在,则在Header中会有一个
响应模式:
1)首行+状态码(标识这次请求是否失败,以及原因)+状态码描述信息
2)协议头header,每一行是一个冒号分隔的键值对,请求的属性,每组属性之间用\n分隔,遇到空行表示Header结束
3)body:空行后面的内容都是body,body允许为空字符串,如果body存在,则在header中会有一个Content-Length属性会标识Body的长度;
如果服务器返回了一个html页面那么html页面中的内容就是在body中
3、HTTP协议的方法:
| 方法 | 说明 | 支持的HTTP协议版本 |
| POST | 获取资源 | 1.0, 1.1 |
| GET | 传输实体主体 | 1.0, 1.1 |
| PUT | 传输文件 | 1.0, 1.1 |
| HEAD | 获得报文首部 | 1.0, 1.1 |
| DELETE | 删除文件 | 1.0, 1.1 |
| OPTIONS | 询问支持的方法 | 1.1 |
| TRACE | 追踪路径 | 1.1 |
| CONNECT | 要求用隧道协议连接代理 | 1.1 |
| LINK | 建立和资源之间的关系 | 1.0 |
| UNLICK | 断开连接关系 | 1.0 |
常用的方法:GET和POST
GET和POST的区别?
GET把数据放在query_string来传输,POST请求通常把数据据通过body来传输
并不是唯一,也可以互放,只是习惯性
4、HTTP的状态码:
| 类别 | 原因短语 | |
| 1XX | Informational(信息性状态码) | 接受的请求正在处理 |
| 2XX | Success(成功状态码) | 请求正常处理完毕 |
| 3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
| 4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
| 5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 |
200 OK 请求成功 2xx表示请求成功
302 重定向 3xx重定向(呼叫转移)
303 Location:url 重定向到某url
404 not Found表示访问失败(但百度并没有用404而是302) 4xx都表示客户端开头
403表示没有权限
5xx表示服务器错误
502(服务器挂了)
504超时(服务器响应速度过慢,服务器部署在某云上,带宽过小,卡只是现象,还有cpu,内存问题...cpu占用,带宽占用,内存占用)
cookie和session id的区别:
cookie:存了一个字符串(方便数据永久性存储):客户端里所保存的字符串
session id(大概率放到cookie) 会话id,session对象里面记录某个特定用户的登陆等信息,购买记录,购物车,结算等
会话对象由服务器创建,分配一个session id,再将session id写到浏览器的cookie里面,后续浏览器再访问你相同的网站(区别相同网页,而是网站)的时候,都会带上一个相同的cookie内容,来识别用户信息
(Session是服务器进行描述用户信息的方式(服务器端的概念))
实现Session机制的过程中(程序员手动实现的),通常要把 session id放到cookie中来保存
POST
深入理解TCP/IP应用层的更多相关文章
- 【PHPsocket编程专题(理论篇)】初步理解TCP/IP、Http、Socket.md
前言 我们平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API).那TCP/IP又是什么呢?TCP/IP是ISO/OS ...
- 结合Wireshark捕获分组深入理解TCP/IP协议栈
摘要: 本文剖析了浏览器输入URL到整个页面显示的整个过程,以百度首页为例,结合Wireshark俘获分组进行详细分析整个过程,从而更好地了解TCP/IP协议栈. 一.俘获分组 1.1 准 ...
- 简单理解TCP/IP协议
一.什么是TCP/IP TCP/IP是一个协议族,是因为TCP/IP协议包括TCP.IP.UDP.ICMP.RIP.TELNETFTP.SMTP.ARP.TFTP等许多协议,这些协议一起称为TCP/I ...
- 深入浅出理解 TCP/IP 协议 (一)
文章转自:https://www.cnblogs.com/onepixel/p/7092302.html TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入 ...
- 理解TCP/IP协议
TCP/IP协议是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议. 单从TCP/IP协议这个名称看,好多人误 ...
- 小故事理解TCP/IP连接时的三次握手
在TCP/IP协议中,TCP协议通过三次握手建立一个可靠的连接,示意图如下: 下面通过一个小故事简单理解一下这三次握手的具体含义: 一天,快递员小客(客户端)准备去小服(服务器)家去送快递(准备与服务 ...
- 结合Wireshark捕获分组深入理解TCP/IP协议栈之DNS协议
摘要: 本文简单介绍了DNS协议理论知识,给出URL解析步骤,详细讲述了DNS报文各个字段含义,并从Wireshark俘获分组中选取DNS相关报文进行分析. 一.概述 1.1 DNS ...
- 前端工程师如何理解 TCP/IP 传输层协议?
网络协议是每个前端工程师都必须要掌握的知识,TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP,本文将介绍下这两者以及它们之间的区别. TCP/IP网络模型 计算机与网络设备要相 ...
- 理解TCP/IP,SOCKET,HTTP,FTP,RMI,RPC,webservic
TCP/IP:网络宽带,传输数据的基础协议,所有得数据要在网络上传输都是基于TCP/IP协议(或UDP),才能送达到指定的目的地(IP,服务器硬件地址). SOCKET:SOCKET只是面对编程人员的 ...
随机推荐
- JAVA笔记 -- this关键字
this关键字 一. 基本作用 在当前方法内部,获得当前对象的引用.在引用中,调用方法不必使用this.method()这样的形式来说明,因为编译器会自动的添加. 必要情况: 为了将对象本身返回 ja ...
- C# 第三方库
基本上选用的都是 https://www.nuget.org 分类中最流行的那个库 1. 日志工具库 NLOG Stackify.com 简单入门文章 https://stackify.com/nl ...
- Zeppelie连接jdbc的使用
1. 下载 wget http://apache.mirror.cdnetworks.com/zeppelin/zeppelin-0.8.1/zeppelin-0.8.1-bin-all.tgz 2. ...
- [20191013]oracle number类型存储转化脚本.txt
[20191013]oracle number类型存储转化脚本.txt --//测试看看是否可以利用bc obase=100的输出解决问题.另外以前脚本忘记考虑尾数的四舍五入问题.--//也许编程就是 ...
- thinkPHP中怎么访问域名直接跳到后台登录页面
问题: 我想只访问域名就跳到后台登录页面,怎么把地址栏里的路径隐藏掉 答案: 修改配置Common里的conf文件夹里,把默认模块改成“Admin”,默认控制器改成“login”系统默认的默认模块式h ...
- mac 下删除 python 2.7
删除 mac os 自带的 python 2.7, 以方便安装 python 3 的虚拟环境. 删除 Python 2.7 framework sudo rm -rf /Library/Frame ...
- oracle数据库不小心删除了数据
1.select * from SYS_DICT as of timestamp to_timestamp('2019-11-05 10:00:00','yyyy-mm-dd hh24:mi:ss') ...
- Multi-touch (MT) Protocol 小结
1, 两种多点触摸协议: A类: 处理无关联的接触: 用于直接发送原始数据: B类: 处理跟踪识别类的接触: 通过事件slot发送相关联的独立接触更新. 2, 触摸协议的使用: A类协议: A类协议在 ...
- [日常] 跨语言的POST请求问题的解决
部门对外提供了一个HTTP的POST接口,但是对方公司的程序员使用C语言进行的调用,PHP这边一直无法获取到参数.遇到这种情况是因为对方没有完全按照HTTP协议中的POST发送数据.在HTTP头部分没 ...
- (五)Amazon Lightsail 部署LAMP应用程序之迁移到Amazon RDS实例
迁移到您的Amazon RDS实例 在某些时候,您的应用程序需求可能需要在 Amazon Lightsail中找不到的功能.幸运的是,将应用程序的一个或所有部分移动到其他AWS服务中非常简单 您将数据 ...