网络协议层详解:从物理到应用层

需积分: 50 2 下载量 57 浏览量 更新于2024-12-11 收藏 815KB PDF 举报
"Protocol_Layer【170cm×110cm】.pdf 是一个详细展示网络协议分层结构的文件,通过大型图表呈现了各个协议在网络中的相对位置,帮助理解不同层次协议的功能和作用。文件中提到了从物理层到应用层的多个关键网络协议层,并列举了一些具体的协议实例,如 Ethernet V.2、TCP/IP、802.2等。" 在计算机网络中,协议层是通信的基础,它们定义了数据如何在不同的硬件和软件之间传输。以下是各个协议层的主要职责: 1. 物理层 (PHYSICAL LAYER): - 这是网络模型的最底层,负责将数据转换为可以通过物理介质(如电缆、光纤)传输的电信号。 - 定义了接口规范,包括电气特性(电压、电流、信号速率)和机械特性(连接器类型、线缆规格)。 2. 数据链路层 (DATALINK LAYER): - 数据链路层将数据封装成帧,确保数据正确无误地从一个节点传输到相邻节点。 - 控制物理层的数据流,实现错误检测和纠正,例如通过使用CRC校验。 - 其中,802.2 是一种逻辑链路控制(LLC)协议,与 Ethernet V.2 相关,用于规定上层协议如何与物理层交互。 3. 网络层 (NETWORK LAYER): - 负责地址分配和路由选择,确保数据包能够从源主机到达目标主机。 - IP(Internet Protocol)是网络层的主要协议,负责提供无连接的、不可靠的数据传输服务。 4. 传输层 (TRANSPORT LAYER): - 提供端到端的数据传输服务,确保数据的可靠传输。 - TCP(Transmission Control Protocol)和 UDP(User Datagram Protocol)是传输层的主要协议,TCP 提供面向连接的、可靠的传输,而 UDP 提供无连接的服务。 5. 会话层 (SESSION LAYER): - 规定了独立于架构的数据传输格式。 - 负责建立、管理和终止不同系统间的通信会话。 - 该层还涉及数据编码解码、加密解密以及数据压缩。 6. 表示层 (PRESENTATION LAYER): - 处理数据的表示形式,如编码、解码、加密和解密。 - 它确保在不同系统间进行数据交换时,数据的含义保持不变。 7. 应用层 (APPLICATION LAYER): - 最高层,直接与用户应用程序交互。 - 提供标准服务给应用程序,如 FTP(文件传输协议)、HTTP(超文本传输协议)和 SMTP(简单邮件传输协议)。 此外,文件中还提到了一些特定协议和服务,如 ARP(地址解析协议)、SLIP(串行线路互联网协议)、CSLIP(压缩串行线路互联网协议)、RPL(远程程序加载)、NCP(NetWare核心协议)、IPX(互连包交换)、NDS(NetWare目录服务)等,这些都是在不同层实现特定功能的协议。这些协议共同构成了网络通信的基础,使得信息能够在复杂的网络环境中准确、高效地传递。

优化这段代码if (ResMeta.PROTOCOL_HTTPS.equals(token.getLoginProtocol()) || ResMeta.PROTOCOL_HTTP.equals(token.getLoginProtocol())) { ssoTicket.setHostDomainName(token.getTargetIp()); ssoTicket.setWebappUrl(token.getLoginProtocol() + "://" + token.getTargetIp()); ssoTicket.setAgreementType(token.getLoginProtocol()); if (!this.fillIssuerInfo(ssoTicket, token.getIssuerId(), token.getIssuerToolId(), token.getResType(), sid)) { String err = "加载应用发布错误"; rv.setDetail(err); rv.setStatus(DataResult.STA_SSO_REGISTER_TICKET_ERR); logger.error(err); return null; } } else if (ResMeta.RESTYPE_CSAPP.equals(token.getResType())){ if (!this.fillIssuerInfo(ssoTicket, token.getIssuerId(), token.getIssuerToolId(), token.getResType(), sid)) { String err = "加载应用发布错误"; rv.setDetail(err); rv.setStatus(DataResult.STA_SSO_REGISTER_TICKET_ERR); logger.error(err); return null; } } else if (ResMeta.PROTOCOL_RDP.equals(token.getLoginProtocol())) { if (ssoAcc != null && ssoAcc.getWinAccType() == AccMeta.WIN_ACC_DOMAIN_TYPE) { this.fillHostDomain(ssoAcc, ssoTicket, token.getAccName()); } else if (resInfo.getHostName() != null && resInfo.getHostName().length() > 0) { ssoTicket.setAcc(resInfo.getHostName() + "\\" + ssoTicket.getAcc()); } } else if (ResMeta.PROTOCOL_SSH2.equals(token.getLoginProtocol()) || ResMeta.PROTOCOL_SSH1.equals(token.getLoginProtocol()) || ResMeta.PROTOCOL_TELNET.equals(token.getLoginProtocol())) { CMDSSOTicket cmdTicket = (CMDSSOTicket) ssoTicket; /* 设置提权(原5.0的扩展策略)如果存在工单号 按工单处理 规则授权暂时不支持设置提权 */ if (token.getWorkId() != null && token.getWorkId().length() > 0) { try { SSOWorkOrderAuthz authz = new SSOWorkOrderAuthz(); authz.setWorkOrderId(token.getWorkId()); authz.setResId(token.getResId()); int suPermission = ssoWorkOrderRepository.findWorkOrderAuthcSuPermission(authz); if (SSORegisterMeta.SU_PERMISSION_YES_VALUE == suPermission && ResMeta.SU_PRIVILEGE_YES_VALUE == resInfo.getSuPrivilege()) { cmdTicket.setSu_cmd(resInfo.getSuCmd()); cmdTicket.setSu_pwd(this.getPasswd(resInfo.getId(), resInfo.getSuManagerAcc())); cmdTicket.setSu_pwd_prompt(resInfo.getSuPwdPrompt()); } } catch (Exception e) { } } else if (token.getAuthzId() != null && token.getAuthzId().length() > 0) { try { int suPermission = ssoResroleRepository.findResroleAuthcSuPermission(token.getAuthzId()); if (SSORegisterMeta.SU_PERMISSION_YES_VALUE == suPermission && ResMeta.SU_PRIVILEGE_YES_VALUE == resInfo.getSuPrivilege()) { cmdTicket.setSu_cmd(resInfo.getSuCmd()); cmdTicket.setSu_pwd(this.getPasswd(resInfo.getId(), resInfo.getSuManagerAcc())); cmdTicket.setSu_pwd_prompt(resInfo.getSuPwdPrompt()); } } catch (Exception e) { } }

2023-07-11 上传
2023-06-09 上传