报文交换

TCP的三次握手和四次挥手

百般思念 提交于 2019-11-26 00:28:13
相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需要控制这个过程.但是对于理解TCP底层运作机制,相当有帮助. 而且对于有网络协议工程师之类笔试,几乎是必考的内容.企业对这个问题热情之高,出乎我的意料:-)。有时上午面试前强调这个问题,并重复讲一次,下午几乎每一个人都被问到这个问题。 因此在这里详细解释一下这两个过程。 TCP三次握手 所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。 三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。 第一次握手: 客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。 第二次握手: 服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同时,将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即X+1。 第三次握手. 客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方

TCP协议

旧街凉风 提交于 2019-11-26 00:26:32
概述 传输控制协议 (英语: T ransmission C ontrol P rotocol,缩写: TCP )是一种面向连接的、可靠的、基于 字节流 的 传输层 通信协议,由 IETF 的 RFC 793 定义。在简化的计算机网络 OSI模型 中,它完成第四层传输层所指定的功能。 用户数据报协议 (UDP)是同一层内另一个重要的传输协议。 在因特网协议族( Internet protocol suite)中,TCP层是位于 IP 层之上, 应用层 之下的中间层。不同主机的应用层之间经常需要可靠的、像 管道 一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。 应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的 最大传输单元 (MTU)的限制)。之后TCP把结果包传给IP层,由它来透过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的 确认信息 (ACK);如果发送端实体在合理的 往返时延 (RTT)内未收到确认,那么对应的数据包就被假设为 已丢失 并进行重传。TCP用一个 校验和 函数来检验数据是否有错误,在发送和接收时都要计算校验和。 简介

HTTP 和 HTTPS 的区别

不打扰是莪最后的温柔 提交于 2019-11-25 23:52:38
HTTP 的缺陷 : 不安全 通信使用明文,内容可能会被窃听 不验证通信方的身份,因此有可能遭遇伪装 无法证明报文的完整性,所以有可能被人篡改 加密的方式 通信加密: 建立安全的通信线路 。虽然HTTP 没有加密机制,但是可以通过 SSL(安全套接层) 、TLS(安全传输协议) 的包装,然后再去与TCP通信 内容加密: 对内容本身加密 。把 HTTP 报文中所含的内容进行加密 由于 http 协议无法证明通信的报文完整性,所以如果有攻击者篡改数据也毫无防备。 如何防止篡改 虽然 可以使用 HTTP 协议确定报文的完整性,比如 MD5/SHA-1通过散列值校验的方法,但是这些方法并不是 100% 可靠,所以就引出了 HTTPS = HTTP + 加密 + 认证 + 完整性保护 加密技术 使用两把密钥的公开密钥加密 :一共两把密钥,一把用来加密(公开),一把用来解密(私有),公开密钥可以在网络上流传,但是私有密钥只能不能让任何人知道,公开密钥和私有密钥必须是一对才可以解开。这样做的理由是 : 即使攻击者拿到了公开密钥也无法解密。 HTTPS 采用混合加密机制 :就是共享密钥 和 公开密钥结合使用,首先使用公开密钥加密方式安全交换 待会在共享密钥方式所使用的密钥 ,然后再确保交换的密钥是安全的前提下 使用共享密钥的方式进行通信,因为 共享密钥的效率高,但是安全性不高,公开密钥的安全性高

华为设备二层交换技术——MSTP协议详解

柔情痞子 提交于 2019-11-25 22:52:19
前面提到的STP协议以及Cisco的私有协议PVST+都属于单生成树(SST)协议,也就是对于支持多VLAN的设备只能运行单一的生成树。可以参考博文: Cisco设备二层交换技术——STP协议详解 MSTP是IEEE 802.1s中提出的一种STP和VLAN结合使用的新协议,它既继承了RSTP端口快速迁移的优点,又解决了RSTP中不同VLAN必须运行在同一棵生成树上的问题。接下来我们详细了解一下MSTP协议。 MSTP协议是一个公有的生成树协议,在实际生产环境中得到了广泛的应用。 一、MSTP概述 传统的生成树只能运行一个实例,且收敛速度慢,RSTP在传统STP基础上通过改进达到了加速网络拓补收敛的目的,但是目前依然存在一些缺陷。由于STP和RSTP在整个局域网中,所有的VLAN共享一个生成树实例,因此无法实现基于VLAN的负载均衡,网络环境稳定状态下备份链路始终不能转发数据流量,造成带宽的浪费!如图: 当交换机S1为根网桥时,S2和S3之间的链路将处于阻塞状态,不能转发任何流量。即使网络出现拥塞时,S2和S3之间的链路也不可以被使用,造成资源的浪费! 学过Cisco的朋友都知道Cisco的PVST技术是一种基于VLAN的生成树技术。每个VLAN运行一个生成树,可以重复使用所有的链路,但是当企业生产环境中,有很多VLAN(比如100个VLAN时)

三次握手和四次挥手

℡╲_俬逩灬. 提交于 2019-11-25 16:50:58
三次握手和四次挥手是各个公司常见的考点,也具有一定的水平区分度,也被一些面试官作为热身题。很多小伙伴说这个问题刚开始回答的挺好,但是后面越回答越冒冷汗,最后就歇菜了。 见过比较典型的面试场景是这样的: 面试官:请介绍下三次握手 求职者:第一次握手就是客户端给服务器端发送一个报文,第二次就是服务器收到报文之后,会应答一个报文给客户端,第三次握手就是客户端收到报文后再给服务器发送一个报文,三次握手就成功了。 面试官:然后呢? 求职者:这就是三次握手的过程,很简单的。 面试官:。。。。。。 (番外篇:一首凉凉送给你) 记住猿人谷一句话:面试时越简单的问题,一般就是隐藏着比较大的坑,一般都是需要将问题扩展的。上面求职者的回答不对吗?当然对,但距离面试官的期望可能还有点距离。 希望大家能带着如下问题进行阅读,收获会更大。 请画出三次握手和四次挥手的示意图 为什么连接的时候是三次握手? 什么是半连接队列? ISN(Initial Sequence Number)是固定的吗? 三次握手过程中可以携带数据吗? 如果第三次握手丢失了,客户端服务端会如何处理? SYN攻击是什么? 挥手为什么需要四次? 四次挥手释放连接时,等待2MSL的意义? 三次握手 三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包