美文网首页
2018-12-15\网络与IP&node js服务器

2018-12-15\网络与IP&node js服务器

作者: 阿九_beta | 来源:发表于2018-12-15 17:45 被阅读0次

    HTTP与TCP 协议

    HTTP 协议的底层其实是由 TCP 协议和 IP 协议(简称 TCP/IP)构建的。关于TCP 协议(传输控制协议),有两个相关知识点需要了解:

    1. tcp与udp的区别
      [博客]https://www.nowcoder.com/questionTerminal/63c8b45c91a544bd8febc1f1ff02e3b5?toCommentId=73766
      答:tcp可靠(可靠指的是了解是谁收到客户端请求)、面向连接,相对udp较慢;udp不可靠,不面向连接、相对tcp较快。
      2.tcp的三次握手指的是什么 [博客]https://github.com/jawil/blog/issues/14
      答:每次建立连接前,客户端和服务端之前都要进行三次对话才开始正式传输内容:
    • 客户端:我要连接你了,可以吗
    • 服务端:嗯,我准备好了,连接我吧
    • 客户端:那我连接你咯。
    • (开始后面步骤)

    IP

    IP包括内网 IP 和外网 IP,除此之外,还有两个特别特殊的 IP,就是本地 IP:127.0.0.1。本地 IP 永远表示设备自己。

    还有一个特别特殊的 IP:0.0.0.0,它不表示任何设备。这个 IP 不同的地方含义不同,以后我们会用到,用到的时候再说意思。

    端口

    你想要访问一个设备(前提是你使用的是 TCP 或 UDP 协议。还记得吗,HTTP 就使用了 TCP),只指定 IP 是不够的,还必须指定端口(Port)。
    端口其实就是一个编号,并不是一种硬件。
    一个服务器(硬件)不一定只提供一种服务,比如一个服务器既提供 HTTP 服务,又提供 FTP 服务,还提供 SMTP 服务(邮件服务),那么只用一个 IP 是无法告诉服务器你想要使用哪种服务。
    所以这里有一个重要的原则:一个端口对应一个服务。

    使用node.js写服务器

    使用node.js,可以完成一个服务器的demo来理解客户端(这里就是浏览器啦~)和服务器的交互(发送请求和响应)

    代码的连接在这里:[node.js服务器]。。。。。。

    在终端上执行代码就启动了这个服务器:

    node server-1.js 8888
    
    1. 客户端发送请求:
      在浏览器里输入服务器地址 localhost:8080/index?name=yss,服务器收到请求后会根据server-1.js中下面的代码给出反馈:
    console.log('ss说:得到http路径\n' + path)  
    console.log('ss说:查询字符串的路径\n' + query)
    console.log('ss说:含查询字符串的路径\n' + pathWithQuery)
    

    2.服务器的反馈
    下面这段代码,服务器会根据.setheader里的content type要求,来解析response.write中的内容,最后会反馈到页面上形成网页。

    if(path === '/index'){
        response.statusCode = 200
        response.setHeader('Content-Type', 'text/html; charset=utf-8')
        response.write('<!DOCTYPE html>\n<html>' + '<head><link rel="stylesheet" href="/style"></head>' + '<body><h1>我是html</h1>' + '<script src="/script"></script>' +'</body></html>')
        response.end()
      }else if(path === '/style'){
        response.statusCode = 200
        response.setHeader('Content-Type', 'text/css; charset=utf-8')
        response.write('body{background: red;}')
        response.end()    
      }else if(path === '/script'){
        response.statusCode = 200
        response.setHeader('Content-Type', 'text/javascript; charset=utf-8')
        response.write('Alert(“我是js执行的”)')
        response.end()    
      }
      else{
        response.statusCode = 404
        response.setHeader('Content-Type', 'text/html;charset=utf-8')
        response.write('呜呜呜')
        response.end()
      }
    

    相关文章

      网友评论

          本文标题:2018-12-15\网络与IP&node js服务器

          本文链接:https://www.haomeiwen.com/subject/equahqtx.html