什么是Http/Https、Tcp/Udp/IP、Socket网络编程

参考文献

1.网络编程
2.Java 网络编程
3.HTTP与HTTPS的区别
4.HTTP TCP UDP Socket 关系的几个经典图
5.Socket通信原理

一、什么是网络编程

网络编程是指在不同设备上的程序想实现通信,就需要通过网络连接起来。如你要访问百度首页时,就要去访问百度的服务器,服务器需要和你的电脑建立某种连接,然后通过互联网互相传输数据。
计算机之间的连接本质上是指程序进程之间的连接。因为一台计算机上有很多进程,qq的进程去连接qq的服务器,360的进程去访问360的服务器,所以两台计算机连接本质上不是直接连接的,而是两台计算机上的两个进程之间连接。

二、三者的关系

关系图
http协议位于用户进程之中。
简单来讲,http协议为用于应用层上的协议,即在用户界面上的协议。
tcp/udp/ip协议组则是用于背后用于建立于服务器的连接时使用的。
socket则为基于tcp或udp实现的一套接口,相当于封装了代码。
把网络比作一条公路的话,公路旁的建筑想互相传递包裹。这些包裹相当于http,用于传递包裹的汽车则相当于tcp/udp,ip则为门牌号,而socket则相当于出租车,可以直接使用而不用关心内部构造。

三、什么是http/https

浏览器和服务器之间传递网页的信息时,信息要可以被双方解析并读取,互联网为了统一格式,所有的www服务器都采用了http协议。最初目的是为了提供一种发布和接受html页面的方法。
https协议,简单理解为http协议的加密版本。它和http相比多了一个ssl/tls加密数据包的步骤,能够提供对服务器的身份验证,保护数据的隐私与完整。https协议需要由证书颁发机构签发的安全证明来担保网站的安全性

两者的区别:

  1. 访问网站使用的url和端口不同一个为http://,默认端口为80,另一个为https://,默认端口为443.
  2. https需要证书颁发机构的签名支持,而这一过程通常为收费的。(也可使用自己组织的证书)
  3. http为无状态协议,且为明文传输,无状态协议即对于事务处理没有记忆能力,后续处理一旦需要前面的信息,则它必须重传。而https则可以通过ssl进行身份认证,加密传输内容等功能,ssl是有状态的

使用https的优缺点:

  1. https的安全性高于http,可以提高攻击网站的成本。可以确保数据的完整性和正确性。
  2. https在握手阶段会比较费时,连接缓存也不如http,增加了网站的开销
  3. 需要ssl证书的支持,功能强的证书一般比较贵,不适合个人使用,且ssl证书需要绑定ip,不能在同一ip下绑定多个域名,
  4. https的加密范围有限,不能保证所有环节的安全,且在国家可以控制ca根证书的情况下,https的安全作用依然很有限。

四、什么是tcp/udp/ip

tcp和udp属于运输层协议,ip属于网络层协议,tcp/ip合起来叫一个协议组
用户需要通过网络传递http请求时,需要先定好运输协议,http使用的连接为tcp/ip模型。

tcp和udp区别
tcp是基于连接的协议,在发送数据前会先与对方建立好连接,以确保数据的完整与抵达,是一对一的连接,数据有序。 而udp为非连接协议,不需要连接就直接把数据传送过去,支持多对多,数据无序。
举个例子来说,相当于送快递时,tcp做法是先打电话联系好你,然后确认你可以收到快递后再把包裹送上门给你,而udp则是直接把包裹丢你门口然后再打电话通知你自取,包裹存在丢失的可能。
所以可靠性上来说tcp优于udp,速度上来说则tcp的速度低于udp。两者有不同的应用范围。如当使用ping指令时,则是使用udp;而传输网页等操作时,为了确保整个网页的完整,是采用了tcp协议的。

五、tcp的三次握手与四次挥手

tcp确认连接的过程需要三次握手,之后断开连接也需要四次确认。
三次握手就是
第一次握手:主机a发出请求,然后主机b接收。
第二次握手:主机b接收到请求后发出确认信号给主机a
第三次握手:主机a再次发送一次给主机b。完成
之后就可以传输数据了,之所以要反复确认是为了确保数据的可靠性的同时效率可以达到最高。
四次挥手:
第一次挥手:主机a发出请求给主机b请求断开连接
第二次挥手:主机b收到请求后,返回信号给主机a
第三次挥手:主机b关闭连接,返回已关闭信号给主机a
第四次挥手:主机a发送已收到确认信号回主机b
之所以断开需要确认也是为了确保数据完整性的同时可以最大程度的降低开销

六、Socket

socket可以基于tcp或者udp实现,简单来说他是将tcp/ucp/ip这些复杂的协议封装在接口里面以简化编程。
socket是以open-write/read-close模式实现的。
当socket以tcp的形式实现的步骤:
int socket()方法,创建socket的方法
int bind(),创建完成后需要绑定ip地址,端口等
listen()方法,服务器监听的方法,connect()方法,客户端连接的方法,成对使用,服务器可以设置最大连接个数。
accept()方法,在监听到有客户端connect之后就会调用这个方法完成连接。
之后使用read(),write()或者其他的方法实现通信
socket以udp的形式实现:
基本步骤一致,listern和connect不需要,直接使用recvfrom()接收数据,sendto()发送数据。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值