zoukankan      html  css  js  c++  java
  • DNS,TCP,IP,HTTP,socket,Servlet概念整理

             概念整理
     
      常见的协议虽然很容易理解,但是看了之后过一段时间不看还是容易忘,笔记如下,比较零碎,勉强供各位复习。如有错误欢迎指正。
     
    DNS协议
     
    DNS 协议的作用是将域名解析为IP,域名的数量非常多,域名和ip的对应关系也经常变化,所以就需要专门的DNS服务器,用来将域名解析为IP。
    windows下,nslookup命令可以查看域名解析的结果。nslookup +网址。
    世界各地有很多DNS服务器,也有一些大型公用的DNS服务器可以使用,比如Google的8.8.8.8和国内的114.114.114.114.我们直接访问的DNS服务器叫本地DNS服务器,它会从主DNS服务器获取跟我们请求域名对应的ip,并且将对应关系放到缓存中。
    域名也有很多时候不好用,所以导航页被需要。微信小程序和公众号的导航页有待开发。
     
    TCP/IP协议
     
    IP协议是用来查询地址的,对应着网际互联层,TCP协议是用来规范传输规则的,对应着传输层。ip负责找到地址,TCP负责具体传输。这是两个不同的协议。
    TCP在传输之前会进行上次沟通,一般称为“上次握手”,传输数据断开的时候要进行四次沟通,一般称为“四次挥手”。相关序号和标志位:
    seq: sequence number的缩写,表示所传输的数据的序号。
    ack: acknoledgement number 的缩写,表示确认号。
    ACK: 确认为,只有ACK=1的时候ack才起作用。
    SYN: 同步位,用于建立连接时同步序号。
    FIN: 终止位,用来在数据传输完毕后释放连接。
    用于传输层的协议还有UDP,UDP是无连接的,TCP沟通好后才会传输数据,UDP拿到地址立即传输。TCP可靠,但是效率低;UDP效率高常用于视频,语音等对完整性要求不高的的资源。
    协议只是一套规则,并不能具体工作,就像程序的接口一样;而socket是TCP/IP协议的一个具体实现。
     
    HTTP协议
     
    Http是应用层的协议,TCP/IP协议接收数据之后需要通过Http协议来解析才可以使用。发送电报过程中的编码和解码过程就相当于网络传输中的HTTP协议。
      HTTP协议中的报文结构:
      1,请求报文
      方法  URL  http版本  
      参数1:值
      参数2:值
      ,,,,
      主体
      2,相应报文
      http版本  状态码  简短原因
      参数1:值
      参数2:值
      ,,,,
      主体
      Response中的状态码:
      1XX: 信息性状态码。
      2XX: 成功状态码。200
      3XX: 重定向状态码。301表示重定向。
      4XX: 客户端错误状态码。404
      5XX: 服务端错误状态码。500表示内部错误。
       
     Socket,Servlet与JavaWeb
     
      Servlet是j2ee标准的一部分,是javaweb的开发标准。Servlet的作用是对接收到的数据进行处理并生成要返回给客户端的结果。
    Servlet是对接收到的数据进行处理并生成要返回给客户端的结果,Servlet制定了Java中处理Web请求的标准,我们需要按照标准去做,规范、标准自己是不干活的;要想使用Servlet需要有相应的Servlet容器才行,例如常见的Tomca就是一个Servlet容器t。
     
    1,socket:是TCP/IP协议的一个具体实现。Java中的网络通信即是通过Socket实现的,
      Socket分为两大类,ServerSocket和Socket,ServerSocket用于服务端 ,通过accept方法监听请求,监听到请求后返回socket,socket用于具体完成数据传输,客户端直接使用socket发起请求并传输数据。此外,jdk1.4开始,java增加新的IO模式:nio,(New io),极大的提高了io效率,socket也属于IO的一种,Nio提供相应的工具:ServerSocketChannel和socketChannel。分别对应原来的ServerSocket和Socket。Nio:Buffer(数据),Channel(通道),Selector(分拣员);后两者多对多的关系。P29有处理过程。
     
    2,HTTP协议是应用层的的协议,TCP/IP协议接收到数据之后,通过http协议解析之后才能使用,类似于电报中的编码和解码。
     
    3,Servlet是J2EE标准的一部分,Server+Applet:表示一个服务器应用
      其作用是对接收到的数据进行处理,并生成要返回给客户端的结果,Servlet制定了Java中处理web请求的标准,标准自己时不干活的,所以想要使用Servlet需要有相应的Servlet容器才行,比如我们常见的Tomcat就是一个Servlet;getServletContext方法的返回值ServletContext代表的呃使我们这个应用本身。参数选择保存到Application中时,大多数就是保存在了ServletContext中(其为Application级的,而ServletConfig是Servlet级的)。
    Servlet接口中的方法,init方法在容器启东市被容器调用,getServletConfig用于获取ServletConfig,service方法用于具体处理一个请求;getServletInfo方法可以获取一些Servlet相关的信息,如作者等。
    GenericServlet是Servlet的默认实现,1,实现ServletConfig接口,2,提供无参init方法,3,提供log方法。
    Httpservlet,是用HTTP协议实现的Servlet的基类,写Servlet时直接继承它就可以(DispatchServlet)。Httpservlet主要重写了Service方法。在Service方法中首先将ServletRequest和ServletResponse转换为HttpServletRequest和httpServletResponse。然后根据http请求的不同将请求路由到不同的处理方法。doGet,doPost,doDelete等。HttpServlet,主要将不同的请求方式路由到不同的处理方法,而SpringMVC又将所有的请求合并到了统一的一个方法进行处理。
     
     -----名白
    参考资料:《SpringMVC in Action Source Code and Practice》--韩路彪
    http://www.cnblogs.com/mingbai/p/WebConceptions.html
  • 相关阅读:
    Gogs http和ssh地址显示localhost的问题
    SQL Server从读写频繁的大表中删除大批量数据
    Java Spring Boot: Unable to determine jdbc url from datasource
    NPOI导入Excel日期格式的处理
    手把手教你整合最优雅SSM框架
    JDBC链接数据库MySQL 8.0 Public Key Retrieval is not allowed 错误的解决方法
    Vim 入门教程
    jquery.i18n.properties前端国际化方案
    生产者消费者模式中条件判断是使用while而不是if
    ThreadPoolExecutor 中的 shutdown() 、 shutdownNow() 、 awaitTermination() 的用法和区别
  • 原文地址:https://www.cnblogs.com/mingbai/p/WebConceptions.html
Copyright © 2011-2022 走看看