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版本 \r\n
参数1:值
参数2:值
,,,,
主体
2,相应报文
http版本 状态码 简短原因\r\n
参数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又将所有的请求合并到了统一的一个方法进行处理。
-----名白
- ios开发网络知识 TCP,IP,HTTP,SOCKET区别和联系
TCP,IP,HTTP,SOCKET区别和联系 网络由下往上分为: 对应 物理层-- 数据链路层-- 网络层-- IP协议 传输层-- ...
- TCP/IP、SOCKET、HTTP之间的联系与区别
主要内容: 1.网络的七层协议 2.TCP/IP.SOCKET.HTTP简介 3.TCP连接.HTTP连接.Socket连接的区别 一.网络的七层协议 网络七层由下往上分别为物理层.数据链路层.网络层 ...
- Linux内核 TCP/IP、Socket参数调优
Linux内核 TCP/IP.Socket参数调优 2014-06-06 Harrison.... 阅 9611 转 165 转藏到我的图书馆 微信分享: Doc1: /proc/sy ...
- 网络协议HTTP、TCP/IP、Socket
网络协议HTTP.TCP/IP.Socket 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程师所研究的 ...
- TCP/IP以及Socket聊天室带类库源码分享
TCP/IP以及Socket聊天室带类库源码分享 最近遇到个设备,需要去和客户的软件做一个网络通信交互,一般的我们的上位机都是作为客户端来和设备通信的,这次要作为服务端来监听客户端,在这个背景下,我查 ...
- TCP/IP以及Socket对象基本
1 OSI七层模型概念介绍 物理层:数据以比特的方式进行传递,典型的设备是集线器.该层主要规定了设备的电压或者端口等等一些列物理层面上的规定 数据链路层:该层数据以帧的方式进行传递,主要是两个 ...
- TCP/IP 和 Socket 的关系
要写网络程序就必须用Socket,这是程序员都知道的.而且,面试的时候,我们也会问对方会不会Socket编程?一般来说,很多人都会说,Socket编程基本就是listen,accept以及send,w ...
- TCP/IP的Socket编程
1. TCP/IP.UDP的基本概念 TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,他是一个工业标准的协议集, ...
- TCP,IP,HTTP,SOCKET区别和联系
物理层-- 数据链路层-- 传输层-- TCP协议 会话层-- 我 们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如 果没有应用层,便 ...
随机推荐
- java小白进阶安卓第一天
- 依赖注入之Autofac使用总结
依赖倒置?控制反转(IOC)? 依赖注入(DI)? 你是否还在被这些名词所困扰,是否看了大量理论文章后还是一知半解了? 今天我想结合实际项目,和正在迷惑中的新手朋友一起来学习和总结依赖注入Autofa ...
- XML配置文件中写版本号.xsd和不写版本号的区别
如果写版本号则默认从网上下载并指定最新版本,如果不写版本号则默认从本地下载并使用最新版本.
- django favicon配置
其实网站加一个图标,在/static/images/里面放置favicon.ico 1. 直接url里修改 from django.views.generic.base import Redirect ...
- java常见字符串的操作
/** * java常见字符串的操作 */ public class Test7 { public static void main(String args[]){ StringBuffer sBuf ...
- PHP把2个二维数组合并一个二维数组
$a = array(0 => Array(id => 66,class_name => www.iiwnet.com),1 => Array(id => 67,clas ...
- JAVA数字求和
设计思想:把子符串转换成数字,通过Integer.parseInt(),然后通过循环求和. 流程图:
- Vue和Bootstrap的整合之路
我是一个刚刚接触前端开发的新手,所以有必要记录如何将Bootstrap和Vue进行整合. 如果你是老手,请直接绕道而过.作为一个新手,里面的步骤,过程或者专业术语未必正确,如果你发现哪里错误了,请发邮 ...
- 浅谈IOC
一.引言 IOC-Invertion of Control,即控制反转,是一种程序设计思想,世上本没有路,走的人多了便有了路,本文将一步步带你了解IOC设计思想的演进之路. 在学习IOC之前我们先初步 ...
- Unity应用架构设计(12)——AOP思想的实践
想象一下,当程序所有的业务逻辑都完成的时候,你可能还来不及喘口气,紧张的测试即将来临.你的Boss告诉你,虽然程序没问题,但某些方法为什么执行这么慢,性能堪忧.领会了Boss的意图之后,漫长的排查问题 ...