tcp http udp:
都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务。
tcp http udp三者的关系:
tcp/ip是个协议组,可分为四个层次:网络接口层、网络层、传输层和应用层。
在网络层有ip协议、icmp协议、arp协议、rarp协议和bootp协议。
在传输层中有tcp协议与udp协议。
在应用层有ftp、http、telnet、smtp、dns等协议。
因此,http本身就是一个协议,是从web服务器传输超文本到本地浏览器的传送协议。
socket:
这是为了实现以上的通信过程而建立成来的通信管道,其真实的代表是客户端和服务器端的一个通信进程,双方进程通过socket进行通信,而通信的规则采用指定的协议。socket只是一种连接模式,不是协议,tcp、udp,简单的说(虽然不准确)是两个最基本的协议,很多其它协议都是基于这两个协议如,http就是基于tcp的,.用socket可以创建tcp连接,也可以创建udp连接,这意味着,用socket可以创建任何协议的连接,因为其它协议都是基于此的。
下面我们主要来看一下和我们互联网生活密切相关的协议:http
什么是http协议
http全称是hypertext transfer protocal,即:超文本传输协议,从1990年开始就在www上广泛应用,是现今在www上应用最多的协议, http是应用层协议,当你上网浏览网页的时候,浏览器和web服务器之间就会通过http在internet上进行数据的发送和接收。http是一个基于请求/响应模式的、无状态的协议。即我们通常所说的request/response。
url:
url(uniform resource locator) 地址用于描述一个网络上的资源, 基本格式如下
schema://host[:port#]/path/…/[?query-string][#anchor]
scheme 指定低层使用的协议(例如:http, https, ftp)
host http服务器的ip地址或者域名
port# http服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如 http://www.cnblogs.com:8080/
path 访问资源的路径
query-string 发送给http服务器的数据
anchor- 锚
url 的一个例子
http://www.mywebsite.com/sj/test/test.aspx?name=sviergn&x=true#stuff
schema: http
host: www.mywebsite.com
path: /sj/test/test.aspx
query string: name=sviergn&x=true
anchor: stuff
http的request/response:
先看request 消息的结构, request 消息分为3部分
第一部分叫request line,
第二部分叫request header,
第三部分是body. header和body之间有个空行,
结构如下图
第一行中的method表示请求方法,比如”post”,”get”, path-to-resoure表示请求的资源, http/version-number 表示http协议的版本号
当使用的是”get” 方法的时候, body是为空的
比如我们打开博客园首页的request 如下
get http://www.cnblogs.com/ http/1.1
host: www.cnblogs.com
抽象的东西,难以理解,老感觉是虚的, 所谓眼见为实, 实际见到的东西,我们才能理解和记忆。 我们今天用fiddler,实际的看看request和response.
下面我们打开fiddler 捕捉一个博客园登录的request 然后分析下它的结构, 在inspectors tab下以raw的方式可以看到完整的request的消息,
如下图
accept
作用: 浏览器端可以接受的媒体类型,
例如: accept: text/html 代表浏览器可以接受服务器回发的类型为 text/html 也就是我们常说的html文档,
如果服务器无法返回text/html类型的数据,服务器应该返回一个406错误(non acceptable)
通配符 * 代表任意类型
例如 accept: / 代表浏览器可以处理所有类型,(一般浏览器发给服务器都是发这个)
referer:
作用: 提供了request的上下文信息的服务器,告诉服务器我是从哪个链接过来的,比如从我主页上链接到一个朋友那里,他的服务器就能够从http referer中统计出每天有多少用户点击我主页上的链接访问他的网站。
例如: referer:http://translate.google.cn/?hl=zh-cn&tab=wt
accept-language
作用: 浏览器申明自己接收的语言。
语言跟字符集的区别:中文是语言,中文有多种字符集,比如big5,gb2312,gbk等等;
例如: accept-language: en-us
content-type
作用:
例如:content-type: application/x-www-form-urlencoded
accept-encoding:
作用: 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法(gzip,deflate),(注意:这不是只字符编码);
例如: accept-encoding: gzip, deflate
DSL幻象模式技术急速提升DSL速度
芯片短缺致汽车减产带来的后续影响
d触发器有几个稳态 d触发器和rs触发器的区别
荣耀9什么时候上市最新消息:华为荣耀9发布会时间确定,证件照曝光,配置、设计、价格、代言人早知道
AMAZFIT新品将大面积使用陶瓷材质 价格可能会在2000元以内
通信协议中的HTTP、TCP、UDP你了解多少(上)
中国移动的5G商用进程未能取得绝对领先优势?
区块链可以为中小型企业做点什么
ETHERNET/IP从站转CANOPEN主站连接AB系统的配置方法
基于区块链底层技术而研究开发的ORA游戏项目介绍
中国晶圆厂步入调整期 紫光集团股权转移调整
浅析Cortex-M FPU的Lazy Stacking机制
NI LabVIEW2010 优化编译器,加速代码执行
使用外测液位计测量球罐石油液化气液位
基于TMS320LF2407A数字信号处理器实现逆变器并联运行控制器的设计
物联网有哪些操作系统?物联网操作系统汇总
无人机应用将解决我国“三农”三大痛点问题
六大专场论坛顺利举行 把脉半导体发展趋势 | 聚焦ICS2023峰会
探究霍尔传感器和电流纹波技术在电动车窗防夹中的应用
荣耀V9、小米6、三星S8、华为P10怎么样?华为荣耀V9、小米6、三星S8、华为P10颜值爆表+配置强悍买谁?