java面试常问问题总结---计算机网络篇

1.OSI参考模型及各层功能(7层)

应用层:提供应用层服务,文件传输(FTP),电子邮件(SMTP), 主要的协议还有HTTP(超文本传输协议),DNS,和telnet
表示层:用于数据格式化,代码转换,数据加密,没有协议
会话层:解除或建立与别的接点的联系,没有协议
传输层:接受上一层的数据并交给网络层 TCP UDP
网络层:控制子网运行, IP ICMP(ping主要实现), OSPF(全局泛洪,主要用于IP选路)
数据链路层:将原始比特转为逻辑传输线路 ARP(地址解析协议,根据IP地址获得MAC地址)
物理层:机械电子设备,通信信道上的原始比特流传输
详情查看


2.TCP UDP协议

TCP---传输控制协议
提供的是面向连接、可靠的基于字节流的传输层通信协议。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

  • 将应用层的数据流分割成报文段并发送给目标节点的TCP层
  • 数据包都有序号,对方收到则发送ACK确认,未收到则重传
  • 使用校验来检验数据在传输过程中是否有误

UDP---用户数据报协议
是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

特点:

1.面向非连接
2.不维护连接状态支持同时向多个用户传输相同的信息
3.数据包报头至于8个字节,额外开销较小
4.吞吐量只受限于数据生成速率、传输速率以及机器性能
5.尽最大可能交付,不保证可靠交付,不需要维持复杂的链接状态表
6.面向报文,不对应用程序提交报文信息进行拆分或者合并

区别

连接性:TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
可靠性:TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。
实时性:UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。
传输方式:每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
资源:TCP对系统资源要求较多,UDP对系统资源要求较少。

应用场景
1.普通的会议视频图像,当然首选UDP,毕竟丢几包无所谓。
2.传输文件等,不能丢包,用TCP


3.Http Https协议
  • HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
  • 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
  • HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
  • http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
  • HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。
4.三次挥手四次握手

什么是“3次握手,4次挥手”
TCP是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的“连接”,其实是客户端和服务器的内存里保存的一份关于对方的信息,如ip地址、端口号等。

TCP可以看成是一种字节流,它会处理IP层或以下的层的丢包、重复以及错误问题。在连接的建立过程中,双方需要交换一些连接的参数。这些参数可以放在TCP头部。

TCP提供了一种可靠、面向连接、字节流、传输层的服务,采用三次握手建立一个连接。采用4次挥手来关闭一个连接)

5.HTTP状态码
6.Cookie和Session的区别
7.GET请求和POST请求的区别

详情查看
GET请求参数是通过URL进行传递的,POST请求的参数包含在请求体当中。

GET请求比POST请求更不安全,因为参数直接暴露在URL中,所以,GET请求不能用来传递敏感信息。

GET请求在url中传递的参数是有长度限制的(在HTTP协议中并没有对URL的长度进行限制,限制是特定的浏览器以及服务器对他的限制,不同浏览器限制的长度不同。),POST对长度没有限制。

GET请求参数会完整的保留在浏览器的历史记录中,POST请求的参数不会保留。

GET请求进行url编码(百分号编码),POST请求支持多种编码方式。

GET请求产生的URL地址是可以被bookmark(添加书签)的,POST请求不可以。

GET请求在浏览器回退的时候是无害的,POST请求会.再次提交数据。

GET请求在浏览器中可以被主动cache(缓存),而POST请求不会,可以手动设置。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值