1、套按字及http基础知识之一

MAC地址:设备到设备之间通信时专用(从源主机到目标主机可能经由N台路由设备)4
IP地址:标记主机到主机之间通信时专用
TCP/UDP :提供进程地址 通过port number来标记
进程地址:用TCP,UDP协议的端口标识,端口(16bits)
TCP :传输控制协议,面向连接的协议:通信前需要建立虚拟链路,结束后拆除链路
0-65535
UDP:User Datagram Protocol 无连接的协议 (QQ即时通信类)
0-65535
dns :主机名称解析时使用UDP,区域传输时用到TCP
端口分配原则:
IANA:互联网地址名称分配机构
TCP/UDP都遵循此法则
0-1023:众所周知,永久的分配给固定的应用使用,特权端口 /tcp(ssh),/tcp(http),/tcp(https) 1024-41951:亦为注册端口,但要求并不是特别严格,分配给程序注册为某应用使用,/tcp,/udp(memcached) ,/tcp(mysql) 41952~ :客户端程序随机使用的端口;动态端口或私有端口;可供本地临时分配 其范围的定义:/proc/sys/net/ipv4/ip_local_port_range
二、socket套接字
裸套接字:不调用传输层的tcp,udp协议封装报文

特定功能:由用户空间的进程完成
通用功能:由内核完成,用户空间的进程需要使用通用的功能时,需要向内核空间发起syscall
socket :IPC的一种实现,允许位于不同主机(甚至同一主机)上不同进程之间进行通信;数据交换:Socket API
内核由syscall提供,用户空间中的进程需要与跨网络的主机通信时,需要基于socket编程方式
socket类型:tcp、udp、raw(裸套接字)
SOCK_STREAM :tcp套接字(无:数据段的标识)
SOCK_DGRAM :udp套接字(有:数据段的标识)
SOCK_RAM :裸套接字(非tcp/udp端口)
IPC :进程间通信

socket domain
至少存在两种socket类型(SOCK_STREAM、SOCK_DGRAM)
流:可靠的传输、面向连接、无边界; (通信信道建立后,不用考虑一个报文从哪开始到那结束,直接扔)
数据报:不可靠地传递、有边界、无连接 (以寄信为例,信封就是边界) AF_INET IPv4 Address Family ipv4地址家族 AF_INET6 IPv6 Address Family ipv6地址家族
AF_UNIX UNIX Address Family 同一主机上不同进程之间通信时使用(基于unix socket通信-----不会到通信子网)
套接字相关的系统调用

Ipv4
分类: A:-
B:-
C: -
D: 组播 -
E:- 私有地址:
A:10.0.0.0/
B:172.16.0.0/-172.31.0.0/
C:192.168.0.0/-192.168.255.0/
三、tcp协议
基于socket通信、SOCKET_STREAM

四、跨Internet的主机间通讯

MTU:最大传输单元
分段:当MTU大小大于1500bytes时,需要对ip报文分段
分片:路径MTU最小值小于1500时,需要分段

五、HTTP协议
Hyper Text Transfer Protocol 传输超文本的协议 80/tcp SOCKET_STREAM
html :编程语言,超文本标记语言
超文本:由html编程语言开发出的文本(网页中的链接点击后跳转至另一个网页,链接叫超文本链接)
超文本格式

MIME:多用途互联网邮件扩展 ,实现基于文本传输协议发送非文本数据
1.0 支持MIME,扩展Method, 缓存机制薄弱

2.0 MIME,Method,缓存机制加强,spdy优势整合而来(spdy加速资源的获取)
工作模式
HTTP请求
HTTP响应

请求的内容: Web资源

一个页面中有多个资源:每个页面是一个资源,每个页面有多个超链接,每个链接对应一个资源
UV:User View 针对独立IP
访问入口: 给定的地址
被访问的资源:页面中引用的地址
盗链/跨站引用:网站中的资源来自其他服务器上的资源
URL:用于描述某服务器某特定资源的位置
URI的子集:URL,URN(统一资源命名符)
URL格式

http协议版本:
HTTP/0.9 :原型版本,功能简陋 HTTP/1.0 :第一个广泛使用的版本,支持MIME
HTTP/1.1 :增强了缓存功能 HTTP/2.0 :
一次完整的http请求流程
1、接收客户端请求<是否接收请求>
2、接收请求(并发响应模型)
接收来自于网络的请求报文中对某资源的一次请求的过程
并发访问响应模型(Web I/O):
- 单进程I/O结构:启动一个进程处理用户请求,而且一次只处理一个;多个请求被串行响应
- 多线程I/O结构 :并行启动多个线程,每个进程响应多个请求 <C10K问题>
- I/O复用结构:一个进程响应n个请求
多线程模型:一个进程生成N个线程,每个线程响应一个用户请求
事件驱动:调用libevent库,实现事件驱动,水平触发
- 复用的多进程I/O结构:启动多个(m)进程,每个进程响应n个请求
一个Pv有多个资源,每个资源是一个请求
持久连接:tcp连接建立后不断开
非持久连接:每处理一个请求都有tcp3次握手,4次挥手的过程。
浏览器的自身限制是针对单个域名做限制的,它最多能打开几个线程;而针对多个域名来讲,每一个域名下都来可以同时打开多线程来访问
比如:打开主站时使用www.a.com,而主站内部图片的引用有可能是在另一个域名下www.b.com,视频放在一个域名下,文本放在一个域名下
如果一个域名后端开启二个线程,那么这个浏览器可以同时开启8个线程来加载相应的信息。
具体参考:https://www.cnblogs.com/sunsky303/p/8862128.html
3、处理请求(解析请求报文)对请求报文进行解析,并获取请求的资源及请求方法等相关信息
元数据:根据HTTP请求报文首部,获取method
<method><URL><HTTP-VERSION>首行
Host:被请求的主机
Connection :连接方式
4、访问资源(method、路径映射)---获取请求报文中请求的资源
web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源或动态运行后生成的资源,这些资源放置于本地文件系统某路径下,此路径通常称为DocRoot
DocRoot :/www/web
http://www.magedu.com/images/1.jpg
/www/web/images/1.jpg
web服务器资源路径映射方式:
a)DocRoot定义的路径即为映射的路径
b)Alias
c)虚拟主机DocRoot
d)用户家目录DocRoot
5、构建响应报文(打包封装为httpd响应报文)
资源的MIME类型
显示分类
魔法分类
协商分类
URL重定向:
web服务构建的响应并非客户端请求的资源,而是资源另外一个访问路径
6、发送响应报文
7、记录一次事务的日志(用户行为分析)
1、套按字及http基础知识之一的更多相关文章
- 「Java面试题/知识点精华集」20000+字的Java基础知识篇(2020最新版) !
本文已经收录进我的 79K Star 的 Java 开源项目 JavaGuide:https://github.com/Snailclimb/JavaGuide (「Java学习+面试指南」一份涵盖大 ...
- 网络编程基础之Socket套接字简单应用
一.Socket套接字实现通信循环 所谓通信循环,简单理解就是客户端可以给服务端循环发送信息并获得反馈的过程. 1.基础版 通信循环的程序分为两部分,即两个python模块,分别为客户端.py和服务端 ...
- 基础套接字的C#网络编程
1.基于socket创建套接字网络连接服务端1.初始化 步骤 操作 方法 操作类 1. 创建ip ipaddress IPAddress类 2. 创建ip终结点 ipendpoint IpendP ...
- python套接字编程基础
python套接字编程 目录 socket是什么 套接字的工作流程 基于tcp的套接字 基于udp的套接字 socket是什么 客户端/服务器架构(C/S架构) 服务端:提供服务的一端 客户端:请求服 ...
- Python开发基础-Day23try异常处理、socket套接字基础1
异常处理 错误 程序里的错误一般分为两种: 1.语法错误,这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正 2.逻辑错误,人为造成的错误,如数据类型错误.调用方法错误等,这些解 ...
- python基础之try异常处理、socket套接字基础part1
异常处理 错误 程序里的错误一般分为两种: 1.语法错误,这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正 2.逻辑错误,人为造成的错误,如数据类型错误.调用方法错误等,这些解 ...
- 网络基础之网络协议篇---CS架构--网络通信--osi 协议---套接字socket--粘包
1 C\S 客户端/服务器架构: .硬件 C/S架构 (打印机) .软件 C/S 架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务 ...
- python基础(29):网络编程(软件开发架构、网络基础、套接字初使用)
1. 软件开发架构 我们了解的程序之间通讯的应用可分为两种: 第一种是应用类:qq.微信.百度网盘.腾讯视频这一类是属于需要安装的桌面应用. 第二种是web类:比如百度.知乎.博客园等使用浏览器访问就 ...
- Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令.
Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令. 一丶socket套接字 什么是socket套接字: 专业理解: socket是应用层与TCP/IP ...
随机推荐
- 在论坛中出现的比较难的sql问题:21(递归问题 检索某个节点下所有叶子节点)
原文:在论坛中出现的比较难的sql问题:21(递归问题 检索某个节点下所有叶子节点) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. ...
- windowsAPI创建句柄失败的返回值
创建句柄的api返回值 INVALID_HANDLE_VALUE CreateFile CreateNamedPipe CreateToolhelp32Snapshot FilterConnectCo ...
- Python——初识网络爬虫(网页爬取)
网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕虫 ...
- 【转载】 腾讯云通过设置安全组禁止某些IP访问你的服务器
有时候我们在运维网站的过程中会发现一些漏洞扫描者的IP信息,或者个人爬虫网站的IP信息,此时我们想禁止掉这些IP访问到你的服务器,可以通过腾讯云的安全组功能来设置禁止这些IP访问你的服务器,也可以通过 ...
- javascript中bind()、call()、apply()的使用
一直以来对bind().apply().call()这三个方法都模模糊糊的,现在有时间详细的看看这三个方法,并记录下来. bind() 参考文档:https://developer.mozilla.o ...
- PimaIndiansdiabetes-数据预处理实验(一)
有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python https://www.cnblogs.com/xxtalhr/p/10859517.html 链接:https:// ...
- 张量(tensor)的广播
在使用numpy 对张量(数组)进行操作时,两个形状相同的张量进行加减等运算很容易理解,那么不同形状的张量之间的运算是通过广播来实现的.广播实际上很简单,但是弄清楚是也花了不小功夫,这里记录一下. 广 ...
- Vue指令之`v-if`和`v-show`
一般来说,v-if 有更高的切换消耗而 v-show 有更高的初始渲染消耗.因此,如果需要频繁切换 v-show 较好,如果在运行时条件不大可能改变 v-if 较好. <body> < ...
- JAVA笔记整理(十),JAVA中的File
File类提供对针对目录和文件的读写改等一系列操作方法 创建: public class FileDemo01 { public static void main(String[] args) { t ...
- Linux——发行版
主流发行版 1. Red Hat Linux Red Hat 公司一直是Linux 乃至开源世界的领导者.其有两个不同的发行版本: 一个商用版,称为Red Hat Enterprise Linux,专 ...