通信基础(http,path,url)

 

一、网络基础:

1. ip(互联网协议地址 internet protocal)

每一台接入到互联网的计算机都会被分配一个ip地址(门牌号),表示此台计算机在互联网中的位置,类似于走亲戚串门一样,只要访问到ip就能进行相互间的计算机访问,一个机器进行访问,需要知道对方的ip,被访问的机器要做出回复也需要知道访问者的ip;

计算机默认的ip:127.0.0.1 或者可以通过ipconfig命令在命令段查看自己的ip

ipv4:  使用4个字节表示一个地址

ipv6: 16个字节128位, 增加了ip的容量

2. http://www.baidu.com  

http:通信协议    www:万维网      baidu:域名  com:域名等级

com:顶级域名(商业域名)      edu:教育域名      cn:国家域名 

3. 通信:请求客户端通过发送对应的请求向服务端所要一定的数据

http:单向传输  (客户端向服务器发送请求) 、udp:、mail:、file:...

4. 端口:计算机需要找到某个应用程序的时候并不是调用应用程序的名称(而是找到该程序对应的端口)

5. url:统一资源定位符  uniform resource locator 网址

6. 网络有七层协议: 7.应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层

http:属于应用层协议

请求方法:get ,post,delete,head

可以通过响应部分的Content-Type来设置返回的数据类型

短连接:单向的客户端对服务器连接,不会缓存数据如若要缓存用到Cookie和session

7. http协议分为了两部分:请求报文和响应报文

请求报文:请求行,请求头,空行,请求体

请求行:本次请求的地址,请求的方式,http版本号

请求头:包含了此次请求的信息,例如:设备类型,浏览类型,请求数据长度..

空行:格式

请求体:get没有请求体(请求数据) post请求有请求体  数据可以为空

 

响应报文:响应行,响应头,响应数据;

响应行:本次请求的状态码和响应信息,例如http版本号;

响应头:本次响应的信息,例如响应的服务器类型,响应时间,响应数据的长度;

响应数据

 

请求方法:get、post…

get:数据直接追加到url后面,比较方便,但是长度受限,不够安全;

post:数据要填入到专门的请求体中,比较安全,但是没有get方便,(公司服务器大部分都是post);

能通过浏览器输入地址直接访问的方式都叫做get请求;

 

端口号:范围0~~65535,其中前1000是保留的,不要随便使用;

http默认的端口是80      https默认的端口是443;


二、http模块

http模块也是 nodejs自带的模块之一,用于创建http服务;

http:超文本传输协议 规定了请求方和响应方进行交互时候的规则;

var http = require("http");   // 引入模块

架设服务器:

Server 服务器      client:客户端(浏览器就是最大的 客户端);

request:请求、 response:响应;

createServer创建一个服务器对象,架设http服务,参数是监听函数;

服务器的监听函数会监听服务器有没有收到请求,收到请求之后可以在此次监听函数里面为请求者准备返回的数据;

有两个参数,req:代表此次请求的对象 、res:代表此次响应的对象;

var app = http.createServer(function (req, res) {
    console.log("我收到请求了");
    //  沿用默认值 但是知道了要兼容中文了
    res.setHeader("Content-type", "text/html; charset=utf-8");
    // 准备数据返回给请求方 end方法,用于向响应体内插入数据
    // 把数据返回给客户端,并结束此次请求
    // 默认的是html格式,所以直接可以嵌入标签
    res.end("<h1>hello!</h1>");
});

部署:服务器启动 把各个接口打开;

listen监听,有两个参数,第一个参数是端口号;

第二个参数是开启的回调,开启成功err为空;

app.listen(8080, function (err) {
    if (err) {
        console.log("启动失败:" + err);
    } else {
        console.log("Running...");
    }
});

三、path模块

path模块:文件模块;

文件路径按照完整度分为绝对路径相对路径

绝对路径:有完整的路径,以盘符开头,完整的表示出文件所在的位置; 例如:c://progame file/nodejs/....

相对路径:不完整的路径,只记录路径结尾的部分,忽略层级关系;  例如:/nodejs/nodejs.exe    (./表示当前目录     ../代表上一层);

path也是nodejs自带的模块,专门用来处理文件路径的;

var path = require("path");   // 引入模块

1.  __dirname  代表当前文件所在的绝对路径

console.log(__dirname);

 2. join()   把两个路径拼接到一处

//  示例:
var p1 = "abc/123"; 
var p2 = "qwe/456";
var p3 = path.join(p1, p2); 
//  结果:   abc/123/qwe/456

3.  resolve()   把文件的相对路径转成绝对路径

//  示例:
var p4 = "./abc/七里香.mp3";   
console.log(path.resolve(p4));  
//  结果:  c://progame file/nodejs/abc/七里香.mp3

4. extname()   获得文件中的文件扩展名

//  示例:
var p4 = "./abc/七里香.mp3";
console.log(path.extname(p4)); 
//  结果:  .mp3

5. basename()    获得文件中的文件名

//  示例:
var p4 = "./abc/七里香.mp3";
console.log(path.basename(p4));   
//  结果:七里香.mp3

四、url模块

1. url:统一资源定位符

协议:http,tcp,mail.ftp....

域名:....

端口:8080,3306......

路径:相对路径,绝对路径

参数:get请求post请求的数据追加到对应的参数上

哈希值:{key: value}*

完整的url需要上面这么多;

2. url模块 也分为绝对路径和相对路径

url的绝对路径以协议开头:http://www.baidu.com

url的相对路径不以协议开头,可以以域名或者是ip开头

3. 引入模块

var url = require("url");

4. parse()    url模块可以把一个url路径转换成一个url对象

//  示例:
var urlStr = "http://www.nodejs.org/some/url/?with=query&param=that#about";
var userObj = url.parse(urlStr);
console.log(userObj);
//  结果:
Url {
  protocol: 'http:',
  slashes: true,
  auth: null,
  host: 'www.nodejs.org',
  port: null,
  hostname: 'www.nodejs.org',
  hash: '#about',
  search: '?with=query&param=that',
  query: 'with=query&param=that',
  pathname: '/some/url/',
  path: '/some/url/?with=query&param=that',
  href:
   'http://www.nodejs.org/some/url/?with=query&param=that#about' }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值