服务器_网络通信(TCP/IP网络模型,HTTP(URL),Socket,WebSocket,BIO,NIO,AIO,Mina框架,Netty框架)

通信协议

  • 客户端和服务器之间通信所需要遵循的某种规则

网络模型OSI(Open System Interconnnection)

  • 该模型把把网络通信分为7层(物理层,数据链路层,网络层,传输层,会话层,表示层,应用层),是设计和描述计算机网络通信的基本架构。
  • 在实际应用中一般只是用到4层。
TCP/IP网络模型

这个模型是一系列网络协议的总层,是互联网的基础

4个层次

  • 链接层
    • 对应的是物理层和数据链路层,主要负责监视数据在主机和网络之间的交换
    • 主要协议
      • 地址解析协议(ARP)
  • 网络层
    • 对应的是网络层,主要解决主机与主机之间的通信问题,所含网络通信协议设计数据包在网络行的逻辑传输。还负责数据包在多种网络之间的路由。
    • 主要协议
      • 网际协议(IP)
      • 互联网管理协议(IGMP)
      • 互联网控制报文协议(ICMP)
  • 传输层
    • 对应传输层,为应用实体提供端对端的通信功能,保证数据包的顺序传送和数据的完整性。
    • 主要协议
      • 传输控制协议(TCP)
      • 用户数据报协议(UCP)
  • 应用层
    • 对用会话层,表示层,应用层,提供用户所需的各种服务
    • 主要协议
      • FTP
      • Telnet
      • DNS
      • SMTP
      • HTTP
      • Socket

这些通信协议,保证了端对端网络通信的流畅,常用的TCP和UDP协议是传输层协议,区别很大

1. 面向连接的TCP

一种基于连接的协议,在双方通信传输数据之前,必须建立可靠的连接。(如双方通话前必须把电话接通)

  • 通过三次对话建立连接(三次”握手“)Client A,Server B
    在这里插入图片描述
    1. 客户端A询问服务器B: 发送请求建立连接数据包
    2. 服务器B应答客户端A:返回同意或者拒绝建立连接的数据包
    3. 若服务器同意,客户端则发送建立连接数据包,拒绝则会话结束。

经过上述的三次握手,双方建立了一条隐形的通信通道,这样双方的连接就不会断开,从而进行收发信号。

  • 特点
    • 面向连接:通信前要三次”握手“建立连接。
    • 安全可靠:每一次通信都必须得到对方的应答,否则认为数据报丢失,需要重发。
    • 全双工通信:一旦建立连接,双方都可以通过通道进行数据传输。
    • 一对一:通信只能建立在两个点之间
    • 面向流通信: 通信传输是通过流的形式进行。

2. 面向数据报的UDP

无需建立连接,只要指定目标地址,即可通过UDP向目标地址发送数据报。
由于没有建立可靠的连接,不保证数据包可以送到目的地,所以数据报可能丢失。
比TCP可以发送更大的数据报,并进行一对多的广播发送。

  • 特点:
    • 无连接:通信之前无需建立可靠的连接
    • 数据无保障: UDP不对数据排序,数据报文头部无报文顺序信息,而且无需按顺序到达,可能造成报文混乱。
    • 开销小:无连接,不保证报文送达和报文顺序,开销较小,而且速度更快。
    • 一对一,一对多,多对多:无需连接,可以进行一对一通信,也可以进行一对多的广播通信和多对多的通信。

UDP和TCP的比较和应用场景

  • 大多数情况下,如登录,支付,上传等,都需要服务器返回具体的执行结果以及判断是否成功,需要TCP。
  • 在电视直播中,如果每一个帧或者几个帧画面都要直播服务器确认,会使得画面卡顿和一直占用网络带宽,应使用UDP。

3.HTTP编程

超文本传输协议,是应用最广泛的网络协议,几乎所有的www 文件都要遵守这个协议的标准。最初是为了提供一种HTML页面发布和接收的方法。
在这里插入图片描述
工作原理

  1. 客户端请求服务器建立连接并发出请求数据
  2. 服务器接收请求并发出应答数据,服务器接收到并进行处理,处理之后就返回数据并断开连接。
    在这里插入图片描述
    拓展知识:
  • URL和URN 是URI的子集, 最常用的是URL。
  • URI : Universal Resource Identifier 统一资源标识符
    • 在某一规则下能把一个资源独一无二地标志出来。(像人们的身份证号一样,确定一个唯一的人)
    • Web上,假设所有的Html文档都有唯一的编号,记作html:xxxxx,xxxxx是一串数字,即Html文档的身份证号码,这个能唯一标识一个Html文档,那么这个号码就是一个URI。
    • URI一般由三部组成
      ①访问资源的命名机制
      ②存放资源的主机名
      ③资源自身的名称,由路径表示,着重强调于资源。
  • RUL :Universal Resource Locator 统一资源定位符
    • 是一个地址,唯一确定一个资源(括文件、服务器的地址和目录等),在Web上通过描述是哪个主机上哪个路径上的文件来唯一确定一个资源,也就是定位的方式来实现的URI。
  • URN : Universal Resource Name 统一资源名称

访问网站的范例

  1. 客户端在浏览器输入网址,按回车键,浏览器封装URL到HTTP请求体并发送请求包给Web服务器。
  2. Wub服务器接收请求后建立连接,将请求体中的head和body体中的信息经过服务器逻辑处理后,返回HTML页面给客户端。
  3. 客户端接收到服务器返回信息结构体,从中读取HTML代码,断开连接。
  4. 服务器通过浏览器解析页面并呈现在浏览器上。

使用Java的net包进行简单的HTTP请求

  1. 接收外界传入的目的网站
  2. 的网址字符串根据网址创建包含地址信息的URL对象
  3. 将URL强制类型转换获取HttpURLConnection对象
  4. 然后对对象进行连接信息设置
  5. 获取到输入流,用流对象读取服务器传过来的相应内容。
  6. 在对应答数据执行客户端的业务逻辑

标志的HTTP支持六种请求方法:GET,POST,HEAD,PUT,DELETE,OPTIONS,最常用的是GET和POST方法。

GET和POST

  • 客户端
    • GET请求默认HttpURLCnnection的设置
      1. 接收目的服务器的网络地址字符串
      2. 构造URL对象
      3. 设置为GET请求方式
      4. 发起连接
      5. 创建流对象并从通道中读取服务器的应答信息
      6. 执行业务逻辑
    • POST请求
      1. 接收目的服务器的网络地址字符串
      2. 调用HttpURLConnection的setRequestMethod方法为POST,并将SetDoOutput为true,并通过write方法写入参数到body体。(因为消息POST消息必须通过body传递参数)
  1. 服务端
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值