(转)计算机网络基础知识
1.OSI(open System Interconnection)开放式系统互联参考模型。分为应用层(SMTP)、表示层、传输层(TCP)、网络层(IP)、数据连接层,物理层 。
2.TCP/IP网络通信协议,传输控制协议TCP是一种面向连接的可靠的基于字节流的运输层通信协议,Internet是由几千万台计算机互联而成,确认网络上的每一台计算机靠的就是唯一能识别它的Ip。
3.域名:是Internet上用于标识网络服务器位置的名字,DNS是计算机域名系统的缩写,它由解析器和域名服务器组成。
4.域名服务器:是指保存有该网络中所有主机的域名和对应IP地址,并且有将域名转换成IP地址功能的服务器。
5.网络互联设备:集线器,交换机,路由器,调制解调器,网关等仅仅用于网络互联。
物理层,数据链路层用的设备有:集线器,交换机:用mac地址来确定转发数据的目的地址,其中交换器可以分隔冲突域。
网络层用的设备有:路由器,可以分隔冲突域和广播域。
调制解调器:用于将模拟信号和数字信号之间的转换。
网关:用于传输层以上。
6.Internet物理地址和IP地址转换采用的协议是:地址解析协议ARP(Address Resolution Protocol)。
7.IP地址的编码分为哪两个部分:网络号和主机号,要与子网掩码按位与后就知道主机号和网络号分别是什么。
8.TCP超时重传,是保证数据可靠性的重要机制,发送某一数据后开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止。超时时间计算是超时重传的核心部分:a.定时长照成网络利用率低,b.短的话造成多次重传,使得网络阻塞。
9.TCP与UDP的不同:TCP是可靠的,要连接,有流量控制,有拥塞机制,而效率低的传输协议。
UDP是不可靠的,无连接的,无流量控制和拥塞机制,而效率高的传输协议,可以随便丢包。
10.TCP连接时全双工(每个方向单独关闭):三次握手,四次挥手。(TCP的有六种标示:SYN建立联机,ACK确认,PSH传送,FIN结束,RST重置,URG紧急)
所谓的三次握手是指建立TCP连接,需要服务器和客户端总共发送3个包。3次握手的目的是连接服务器指定的端口,建立TCP连接并且同步连接双方的序列号和确认号并交换TCP窗口大小信息,在socket编程中客户端执行connect连接操作的时候就会触发三次握手。请求——应答——再次确认。
第一次握手:请求建立连接,客户端向服务器发送请求SYN包,等待服务器确认。发送序列号seqNum=200,SYN=1.客户端进入SYN_SEND状态。
第二次握手:服务器收到SYN包,必须确认客户端的SYN(ack=201),同时发送自己的SYN包。发送序列号seqNum=500,ackNum=201,SYN=1,ACK=1.服务器进入SYN_RECN
第三次握手:客户端收到了服务器的SYN+ACk包,向服务器发送确认包AcK(ack=501),发送序列号seqNum=201,ackNum=501,ACk=1.客户端和服务器进入ESTABLISHED状态。
TCP连接的拆除需要发送四个包,客户端和服务器都可以主动发起挥手。所谓的四次分手是指TCP的连接是全双工的,因此每一方都必须进行单独关闭。这个原则就是当一方完成了他的发送任务就会发送一个FIN来终止这一方的连接。另一方被迫终止连接。在socket编程中任何一方执行colse()操作,就会执行四次挥手操作。
第一次挥手:客户端发送一个FIN包,用来关闭客户端到服务器端的数据传递报文。seqNum=200,ackNum=500,ACK=1,FIN=1.
第二次挥手:服务器收到FIN,发回一个ACk,确认这个序号比收到的序号加1。seqNum=500,ackNum=201,ACK=1.
第三次挥手:服务器端关闭与客户端的连接,发送一个FIN给客户端。seqNum=501.ACk=1.FIN=1.
第四次挥手:客户端发回ACK报文,并确定一个ack序列号比收到的序列号加1.seqNum=201,ackNum=502.ACK=1.
11.http协议:是一种应用层协议,由请求和响应构成,是一个标准的客户端服务器模型,http可以通过传输层的TCP协议在客户端和服务器之间传递数据,http协议主要用于web浏览器和web服务器之间的数据交换。
http请求有三个部分组成:A.请求行:METHOD(表示请求方法)/path to resource(请求资源) HTTP/vesion-number(http协议的版本号)。
B.消息报头(请求报头,响应报头,实体报头):Header_name_1:value(格式为:名字+“:”+空格+值)(包含的内容有,指定客户端接收哪些消息,字符集,
内容编码,至少定义一种自然语言,指定请求资源的主机号和端口号(eg:host: www.baidu:8080),浏览器名称和版本号)。
C.请求正文:optional request body。
12.https协议:(Secure Hypertext Tranfer Protocol)安全超文本传输协议,它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息,它使用安全套接字层(SSL)进行信息交换。总的来说,https有两个部分组成:http+SSL/TLS,也就是在http上面又加了一层处理加密信息的模块,服务器和客户端的信息传输都会通过TLS进行加密,所以传输数据是加密的数据。并且采用https协议服务器端必须要有一对数字证书。这套证书就是一对公钥和私钥(公钥加密,私钥解密)。
13.http和https的不同点:
- http的URL以http://开头而https的URL以https://开头。
- http是不安全的,https是安全的,即使有第三方抓到了取了传输过程中的包,也没有办法解析数据。
- http的标准端口是80,而https的标准端口号是443。
- 在OSI网络模型中http是工作在应用层,而https是工作在传输层。
- http无需加密,而https对传输的数据必须加密。
- http无需证书,而https需要证书。
14.GET和POST方法的区别:安全性,提交数据限制,传输数据放的地方,获取变量值的方法不同。
http协议定义很多与服务器交互的方法,最基本的有4种:分别是GET,POST,PUT,DELETE.一个URL地址用于描述一个网络上的资源,而Http中的四个方法分别对应着对这个资源的查,改,增,删。GET一般用于获取/查询资源信息。而POST一般用于更新资源信息。
- get提交的数据放在URL之后,以?分隔URL和传输数据,如:edit.aspx?name=test&id=123456,post方法是把提交的数据放在http包的body中。
- get提交的数据的大小有限制(因为浏览器对URL的长度有限制),post方法提交数据没有限制。
- get方式需要使用Request.QueryStirng来取得变量的值,post方式通过Request.From来获取变量的值。
- get方式提交数据,会带来安全问题,以如一个登陆页面,通过get方式提交数据时,用户名和密码都将出现在URL上,如果页面被缓存或者其他人可以访问这台机器,就可以从历史记录中获取改用户的账号和密码。