前言:阅读《Web性能权威指南》摘录笔记。在这本书开篇就读到第一句话令人印象深刻: "合格的开发者知道怎么做,而优秀的开发者知道为什么那么做"。

内容大纲:

1、因特网有两个核心的协议:IP和TCP。

2、三次握手

正文:

1、因特网有两个核心的协议:IP和TCP。

  IP,即Internet Protoco(因特网协议),负责联网主机之间的路由选择和寻址

  TCP,即Transmission Control Protocol(传输控制协议),负责在不可靠的传输信道之上提供可靠的抽象层。

 TCP/IP也常被称为"因特网协议套件"(Internet Protocol Suite)

2、三次握手

  所有的TCP连接一开始都要经过三次握手。客户端和服务器在交换应用数据之前,必须就起始分组序列号,以及其他一些连接相关的细节达成一致。处于安全考虑,序列号由两端随机生成。

  

  SYN

  客户端选择一个随机序列号x,并发送一个SYN分组,其中可能还包括其他TCP标志和选项。

  SYN ACK

  服务器给x加1,并选择自己的一个随机序列号y,追加自己的标志和选项,然后返回响应。

  ACK

  客户端给x和y加1并发送握手期间的最后一个ACK分组。

  

  关于《理解TCP为什么需要进行三次握手(白话)》这篇博客可以给你带来对TCP的更深入的理解。

   其中要记下来的是:

    为了保证服务端能收接受到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,

    为了保证客户端能够接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手。

  

  或者可以记忆下中的描述:

第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认。
第二次握手:服务器端收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k)即SYN+ACK包,此时服务器进入SYN_RECV状态。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器端进入ESTABLISHED状态,完成三次握手。

(recv -- > receive 接收) (established:英 ɪ'stæblɪʃt 确定的;已制定的,已建立的)

  

  

  

最新文章

  1. css制作对话框
  2. C# Combobox 设置 value
  3. Spring Security笔记:使用数据库进行用户认证(form login using database)
  4. 【ORACLE】记录通过执行Oracle的执行计划查询SQL脚本中的效率问题
  5. Android first---常见布局
  6. Swift学习--微博的基础框架搭建
  7. Linux平台下Lotus Domino服务器部署案例
  8. Android -- View
  9. 全文索引之nutch与hadoop(转)
  10. JNI的替代者—使用JNA访问Java外部功能接口
  11. SQL基本查询_单表查询(实验二)
  12. Android 的消息队列模型
  13. Kettle从excel导入数据到sql server
  14. 深入出不来nodejs源码-内置模块引入初探
  15. No.1101_第十次团队会议
  16. 20155334 2016-2017-2 《Java程序设计》第七周学习总结
  17. Oracle同义词和序列
  18. vue 遇到的一个问题......
  19. Interface与abstract类的区别
  20. Linux电源管理(1)-整体架构【转】

热门文章

  1. Razor语法
  2. Ajax长轮询
  3. 国产达梦数据库的结合Enterprise Library的应用开发
  4. 【处理手记】Configuration system failed to initialize异常的另类原因
  5. 15天玩转redis —— 第四篇 哈希对象类型
  6. student表中创建触发器,实现student表和student _course表的级联删除
  7. Python 3 and MySQL
  8. sina sae开发中出现的问题
  9. 市面上常见的javaEE WEB服务软件
  10. $('div a') 与$('div>a'),.div+.div2与.div~.div2