网络编程,Socket、Http等概念简析

2018-05-16  本文已影响8人  one1go

写在前面

面试真是让人头疼的事情。

这是一篇关于网络编程的相关概念的文章,全文不涉及代码,只对一些名词进行简单解释和扩展。概念性的是最容易出错的,如果有错误,欢迎指正。

什么是网络编程?

网络编程就是两台设备之间传递数据的过程,也可以说是利用套接字完成通讯的编程。

常用的通讯方式有Http通讯和Socket通讯。他们之前的区别是Http是一种协议,而Socket是接口。这两种无论是谁都是在传输层之上的。

网络的七层协议是什么?

网络由下往上分为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层

链路层:这层主要是一些硬件的接口

网络层:这层主要是IP协议(它是Internet最基本的协议,他定义了电子设备如何联入因特网以及数据在他们之间传输的标准,IP是联网设备在因特网中的地址,以前是IPv4协议,但是让他的空间是有限的,以后往IPv6方向发展。IP分类总共有5类,ABCDE,A类常用于大型网络,像IBM,B类用于中型网络,C类用于小型网络,像局域网,校园网,D类是广播地址,E类是保留地址给未来使用)

传输层:这层主要是TCP和UDP协议

应用层:这层主要就是Http协议和Socket接口

TCP和UDP

TCP是一种传输控制协议,它是面向有连接的,它是一种可靠的点对点的通讯

UDP是一种用户数据协议,它是面向无连接的,它是一种不可靠的一点对多点通讯

TCP是通过三次握手来实现连接的

首先客户端发送一个空的数据包给服务端木,并且将客户端置为发送状态;服务端收到这个数据包,会响应客户端一个确认包,并将服务端置为接受状态

客户端收到服务器发回来的响应,然后再向服务端发一个确认包,此包发送完,那么客户端与服务端就建立了连接状态。

UDP传输比TCP更加有效率,因为它不需要三次握手,但是正因为如此,他不如TCP可靠

Socket和Http

Socket就是一对套接字,在服务端叫ServerSocket,在客户端叫ClientSocket,这个Socket就是一个方便TCP和UDP编程的一个接口。它是对TCP/IP协议的一个封装的接口。这个主要用来区分不同的应用进程或者网络连接的通信,实现数据传输的并发服务。

他通过指定传输层协议来进行连接,比如他指定tcp,那么Socket连接就是一个tcp连接。

在看一个Http协议,它是超文本传输协议,是基于TCP之上的协议。他最显著的特点是遵循“请求-响应”的模式。就是客户端向服务端发送请求,服务器收到后响应,然后请求就结束了,他就会断开连接,这就是“一次连接”,也是一个短连接。

http1.0是一个请求对应一个连接,请求结束断开连接

http1.1是一个连接对应多个请求,多个请求可以并发执行,不用等一个请求结束后再执行下一个请求。

为什么要维持Socket和Http连接?

如果是Socket连接,比如说指定传输层为Tcp,那么他就是一个Tcp连接,理论上三次握手成功之后连接建立就可以传输数据了,但是在实际中客户端和服务端之间还要通过多个节点。比如网关,路由器,防火墙等,防火墙会自动关闭不活跃的连接从而导致Tcp连接中断,这时候想维持连接,那么就要通过轮询的方式告诉网关这个连接是处于活跃状态。

如果是http连接,因为他请求的时候需要建立连接,所以他比socket复杂,他需要先给服务器发送请求,然后服务器才能将消息将消息推送到客户端。所以http一般是通过定义向服务器发送连接请求,不仅可以向服务端标明客户端是在线的,同事还可以查询服务是否有新的消息。

Http和Socket的区别?

http封装或者显示数据的具体形式,而socket提供数据传输的能力,http是汽车骨架,而socket是发动机。

http与https的区别?

可以把https理解为http over ssl,ssl是一个安全协议。它是基于安全套接字的超文本传传输协议。

https的请求地址以https://开头

https是安全的

http的端口是80,https的标准端口是443

http需要对传输的数据进行加密

https需要认证证书

使用https连接时,服务器需要认证证书

Http缓存机制

缓存对于移动端是非常重要的存在

1.可以减少请求次数,减少服务器的压力

2.本地数据请求更快,页面不会空白几百秒

3.无网络的情况下也可以请求数据

怎么做

1.发送请求时首先检查是否有缓存

2.检查是否过期,如果没有过期,则从本地加载数据

3.否则从网络上加载数据

这样可以大幅度减少带宽和提升用户体验

Http常用状态码

一般是三位数

1开头的是临时响应——比如100表示服务器已经收到请求的一部分,正在等待其他部分

2开头表示成功——比如 200 代表请求成功

3开头表示重定向——比如 305代表使用代理

4开头表示请求错误——比如404找不到网页

5开头表示服务器错误——比如500表示服务器遇到错误,无法完成请求 503 表示服务不可用

上一篇 下一篇

猜你喜欢

热点阅读