网络编程相关知识点

TCP/IP参考模型:7层协议,从下到上依次是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。在发送端,数据需要从上到下进行封装,每经过一层,都会在数据包的头文件增加一些信息,而在接收端,数据需要从下到上进行解包装,依次取出包头信息。

IP地址(InetAddress):网络中设备的标识,本地回环地址127.0.0.1,主机名localhost。

端口号:用于标识进程的逻辑地址,不同进程的标识(相当于每个软件有一个进程,不同的进程有不同的端口号)。有效端口:0~65535,其中0~1024系统使用或者保留端口。

传输协议:TCP和UDP

  • TCP(传输控制协议Transmission Controll Protocol):无连接不通信。生活中的例子有打电话,下载数据。

    特点是在传输过程中需要建立连接,形成传输数据的通道后再进行数据传输,可以进行大数据传输。建立连接过程中需要进行三次握手,是可靠协议,即传输过程中不会出现丢包现象,但是效率也会因此降低。

    客户端与服务端之间的数据通过流进行传输,称为socket流。想要输入或者输出,需要找socket获取。TCP传输过程中必须先开服务端,再开客户端。

  • UDP(用户数据报文User Date Protocol):不需要进行连接就可以进行数据传输。生活中的例子有快递、对讲机、qq聊天和在线视频。

    特点是将数据及源和目的地址封装在数据包中,不要建立连接。且每个数据包的大小是限制在64k内的,无需进行连接,是不可靠协议,传输过程中会出现丢包现象,但是因为不需要连接,所以传输速度快。UDP虽然每个数据包的大小有限制,但是也可以传输大数据,可以将大数据分包发送。而TCP则可以整包发送。

HTTP(超文本传输协议Hyper Text Transmission Protocol):访问其他主机,必须使用http协议,所有WWW文件都必须遵守这个标准。被用于在浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息。

HTTPS(安全套接字层超文本传输协议 Hyper Text Transfer Protocol over Secure Socket Layer):为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠整数来验证服务器身份,并为浏览器和服务器之间的通信加密。

  • https与http的区别:

    1、https协议需要到ca申请证书。

    2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

    3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443.

    4、http连接很简单,是无状态的;https协议是由ssl和http协议构建的可进行加密传输、身份认证的网络协议。

http的优点:

速度快,效率高:如果使用加密,必然密集使用CPU那么就会拖慢处理速度。

http的缺点:

1、通信使用明文(未加密的报文),内容可能会被窃听。

2、不验证通信方的身份就可能遭遇伪装。

3、无法证明报文的完整性,可能已经被篡改。

http + 加密 + 认证+完整性保护 = https。

为什么不一直使用https呢?

因为加密通信会消耗更多的CPU和内存资源,加密证书购买需要成本。

现在大多非敏感信息使用http通信,包含个人信息的敏感数据,才会使用https加密通信。

http协议中请求的两种方式:GET与POST的区别:

GET:从指定的资源请求数据。

POST:向指定资源提交要被处理的数据。

GET使用URL传参数,而POST将数据都放在BODY中。

基于服务器安全性和稳定性考虑,会对URL长度进行限制,GET请求因为URL长度的限制,所以对URL的大小进行了限制,而POST请求,数据都在BODY中,可以随意选择数据的大小。

POST比GET更安全,GET的URL带有参数,并且会被放在浏览器历史和服务器日志中,只要被偷窥了信息就会被他人获取,而POST日志没有记录,只要数据库服务器不被入侵,基本还是安全的。

对于GET,同一个URL我们多次请求的数据是一样的,也方便转发和书签,而POST多用于敏感数据表单的提交,刷新后就需要重新输入。


DNS(域名解析系统Domain Name System):域名解析首先通过本地的C:\Window\System32\drivers\etc目录下的hosts文件进行解析,如果无法解析到域名,则会在网络中的域名解析服务器中解析。

Socket(套接字):为网络服务提供的一种机制,通信的两端都有Socket,通信其实就是Socket间的通信,数据在两个Socket之间通过IO传输。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章