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应用层的更多相关文章

  1. 【PHPsocket编程专题(理论篇)】初步理解TCP/IP、Http、Socket.md

    前言 我们平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API).那TCP/IP又是什么呢?TCP/IP是ISO/OS ...

  2. 结合Wireshark捕获分组深入理解TCP/IP协议栈

    摘要:     本文剖析了浏览器输入URL到整个页面显示的整个过程,以百度首页为例,结合Wireshark俘获分组进行详细分析整个过程,从而更好地了解TCP/IP协议栈.   一.俘获分组 1.1 准 ...

  3. 简单理解TCP/IP协议

    一.什么是TCP/IP TCP/IP是一个协议族,是因为TCP/IP协议包括TCP.IP.UDP.ICMP.RIP.TELNETFTP.SMTP.ARP.TFTP等许多协议,这些协议一起称为TCP/I ...

  4. 深入浅出理解 TCP/IP 协议 (一)

    文章转自:https://www.cnblogs.com/onepixel/p/7092302.html TCP/IP 协议栈是一系列网络协议的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入 ...

  5. 理解TCP/IP协议

    TCP/IP协议是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议. 单从TCP/IP协议这个名称看,好多人误 ...

  6. 小故事理解TCP/IP连接时的三次握手

    在TCP/IP协议中,TCP协议通过三次握手建立一个可靠的连接,示意图如下: 下面通过一个小故事简单理解一下这三次握手的具体含义: 一天,快递员小客(客户端)准备去小服(服务器)家去送快递(准备与服务 ...

  7. 结合Wireshark捕获分组深入理解TCP/IP协议栈之DNS协议

    摘要:     本文简单介绍了DNS协议理论知识,给出URL解析步骤,详细讲述了DNS报文各个字段含义,并从Wireshark俘获分组中选取DNS相关报文进行分析. 一.概述 1.1 DNS      ...

  8. 前端工程师如何理解 TCP/IP 传输层协议?

    网络协议是每个前端工程师都必须要掌握的知识,TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP,本文将介绍下这两者以及它们之间的区别. TCP/IP网络模型 计算机与网络设备要相 ...

  9. 理解TCP/IP,SOCKET,HTTP,FTP,RMI,RPC,webservic

    TCP/IP:网络宽带,传输数据的基础协议,所有得数据要在网络上传输都是基于TCP/IP协议(或UDP),才能送达到指定的目的地(IP,服务器硬件地址). SOCKET:SOCKET只是面对编程人员的 ...

随机推荐

  1. Web前端基础(1):HTML(一)

    1. HTML概述 1.1 什么是HTML HTML称为超文本标记语言,是一种标识性的语言.它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体.H ...

  2. indexOf()字符位置

    package seday01; /** * int indexOf(String str) * 查找给定字符串在当前字符串中的位置,若返回值为-1,则 * 表示当前字符串中不含有给定的内容. * @ ...

  3. node设置跨域白名单

    // 判断origin是否在域名白名单列表中 function isOriginAllowed(origin, allowedOrigin) { if (_.isArray(allowedOrigin ...

  4. vuejs之路由应用之二

    现在我们开始一个应用: 一个应用中包含4个组件,我们暂且可以想象是4个页面,首先是App.vue,App.vue中又包含3个子组件:About.vue,Home.vue,Document.vue Ap ...

  5. 元祖,range,字典,结构,fromkeys的使用

    3.5.3 元祖 关键字 tuple tu=(1,2,3,'你好',True) print(tu) 元祖是有序,不可变数据,不能进行修改, 支持索引查看 存储一些比较重要的信息,在配置文件中使用 存放 ...

  6. bash 中 小括号的作用

    单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格. ...

  7. Centos7安装vsftp服务

    我们需要向centos操作系统的服务器上上传文件或者下载文件,这时候,ftp有必要安装下, 我们选择主流的vsftp: 第一步:安装vsftp yum install -y vsftpd 第二步:设置 ...

  8. postman---postman参数关联

    我们做接口测试的时候都会遇到一个场景,就是参数关联,所谓的参数关联就是上一个参数的返回值用于下一个参数的请求中,通过python中requests我们知道如何请求,那么通过postman如何请求? 参 ...

  9. Es6编程风格

    let 取代 var let 和 const 之间优先使用 const 字符串 静态字符串一律使用单引号或反引号,不使用双引号 动态字符串使用反引号 `` 解构赋值 使用数组成员对变量赋值时,优先使用 ...

  10. Linux 操作MySQL常用命令行

    1.连接数据库 mysql -uroot -p Enter password: ** Mysql> 出现mysql>说明成功连接到数据 2.显示数据库 mysql> show dat ...