当前位置: 首页 > news >正文

网路通信问题收集

1.TCP/IP协议中三次握手机制具体是什么?窗口滑动机制的作用和基本机制是什么?

第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;
第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);
同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。
完成了三次握手,客户端和服务器端就可以开始传送数据。以上就是TCP三次握手的总体介绍。

窗口滑动机制的作用:
TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现。
具体介绍:
窗口滑动就是说一次传输几个数据。对所有数据帧按顺序赋予编号,发送方在发送过程中始终保持着一个发送窗口,只有落在发送窗口内的帧才允许被发送;同时接收方也维持着一个接收窗口,只有落在接收窗口内的帧才允许接收。这样通过调整发送方窗口和接收方窗口的大小可以实现流量控制。

2.四次挥手

第一次挥手:主机1(可以是客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;
第二次挥手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我“同意”你的关闭请求;
第三次挥手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态;
第四次挥手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。

3.https流程:

1. 浏览器将自己支持的一套加密规则发送给网站。 
2. 网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。 
3. 浏览器获得网站证书之后浏览器要做以下工作: 
    a) 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。 
    b) 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。 
    c) 使用约定好的HASH算法计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。 
4. 网站接收浏览器发来的数据之后要做以下的操作: 
    a) 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。 
    b) 使用密码加密一段握手消息,发送给浏览器。 
5. 浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密

http://www.cnblogs.com/hongdada/p/7457410.html

http://www.cnblogs.com/hongdada/p/8304954.html

相关文章:

  • 【译】Vue 的小奇技(第八篇):两个鲜有人知的 Vuex 技巧
  • AI 芯片,是金山还是泡沫?
  • 友情链接有什么用
  • Ansible杂记(2)
  • crontab详解
  • call、apply、bind的用法
  • Perl的简单联网操作
  • [svc]NFS存储企业场景及nfs最佳实战探究
  • 1安装Linux
  • underscore源码剖析之整体架构
  • HDU-2087-剪花布条
  • 关于线性基的一丢丢理解
  • 基于阿里雲Oracle12cR2(Linux)實例靜默安装Cloud Control 13c 13.3
  • Spring Boot + thymeleaf 后台与页面(二)
  • vue学习系列(二)vue-cli
  • [译] React v16.8: 含有Hooks的版本
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • dva中组件的懒加载
  • golang中接口赋值与方法集
  • Java-详解HashMap
  • java小心机(3)| 浅析finalize()
  • JS字符串转数字方法总结
  • laravel5.5 视图共享数据
  • npx命令介绍
  • Python进阶细节
  • Python连接Oracle
  • Sublime Text 2/3 绑定Eclipse快捷键
  • vue-router 实现分析
  • webgl (原生)基础入门指南【一】
  • 经典排序算法及其 Java 实现
  • 设计模式走一遍---观察者模式
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 详解移动APP与web APP的区别
  • 用jquery写贪吃蛇
  • 怎么将电脑中的声音录制成WAV格式
  • (1)STL算法之遍历容器
  • (a /b)*c的值
  • (rabbitmq的高级特性)消息可靠性
  • (八)c52学习之旅-中断实验
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (算法)前K大的和
  • .libPaths()设置包加载目录
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .net实现客户区延伸至至非客户区
  • .net项目IIS、VS 附加进程调试
  • /dev/sda2 is mounted; will not make a filesystem here!
  • /etc/sudoers (root权限管理)
  • [<MySQL优化总结>]
  • [FxCop.设计规则]8. 也许参数类型应该是基类型