文章分享-8周-分享《码出高效》的知识点(2)

本次主要阅读完《码出高效》的第一章,本章内容如下:
1、计算底层0与1
2、浮点数
3、字符集与乱码
4、CPU与内存
5、TCP/IP
6、信息安全
7、编程语言的发展

个人比较感兴趣主要集中4、5、6。
整理出这三节比较重要知识点。

CPU与内存

CPU内部结构图


image.png

各个部分用途说明


image.png

计算器存储方式


image.png

TCP/IP

网络协议

TCP/IP是一个网络传输协议框架,是一个协议族。
其中包含:HTTP、HTTPS、FTP、SMTP、UDP等
另外有一个传输协议ISO/OSI 七层传输协议(已被淘汰)

TCP/IP分层协议结构


image.png

链路层:以字节为单位把0和1分组。定义数据帧、写入源和目标机器的物理地址、数据、校验位来来传输数据
链路层报文结构

image.png

MAC地址6字节48位,通常用16进制表示。前24位管理机构分配,后24位厂商分配,保证全球唯一。

网络层:根据IP定义网路地址、区分网段。子网内根据地址解析协议(ARP)寻找mac地址。子网外进行路由转发数据包(IP数据包)

传输层:数据包通过网络层传输到目标计算机,应用程序在传输层定义端口,确认身份之后,将数据包交给应用程序。实现端口与端口之间传输。
UDP:面对无连接、不可靠传输,多用于视频通讯、电话会议。
TCP:面对连接、可靠连接(具备失败重发机制)

应用层:数据到达应用程序,以某种统一协议解读数据。

总结:应用层按协议打包数据、传输层加上双方端口、网络层加上双方IP地址、链路层加上双方MAC地址,并将数据拆分成数据帧。

IP协议

IP协议是一种面向无连接、无状态、没有额外机制保证发送包是否有序发送达。
IP规定IP地址格式,该地址相当于在逻辑意义上进行网段的划分,给计算器额外设置唯一地址。MAC地址虽然也是唯一地址,但是无法全世界广播,通过IP地址进行分层管理。
IP主要功能在WLAN内进行路由寻址,选择最佳路由。

IP报文格式


image.png

生存时间TTL:表示数据包可以经过的最多路由器总数。每经过一个路由TTL都减1,当该值为0,数据包则被丢弃,并发送ICMP报文通知源主机,防止源主机无休止发送报文。
ICMP:是一种检测网络是否通畅、主机是否可达,路由是否可用的网络协议。ping命令基于该协议。
报文分片:不同物理硬件拥有不同物理特性,对数据帧的最大长度有不同限制。不在物理网之间需要对IP报文进行分片,该功能由路由器完成。

TCP连接

TCP连接是一种面向连接、确保数据在端对端间可靠传输的协议。
TCP报文格式


image.png

序列号:指所发送数据包中数据部分第一个字节的序号。
确认序列号:期望收到来自对方的下一个数据包数据部分第一个字节的序号。
SYN:用于建立连接的同步信号
ACK:用于收到的数据进行确认,所确认的数据有确认序列号表示。
FIN:表示后面没有数据可以接收,意味连接需要关闭

TCP三次握手创建连接


image.png

连接三个步骤
1、A机器发出数据包,SYN标识为1(表示建立连接),序列号seq为x。
2、B机器接收到A机器请求建立连接(SYN标识判断),发送一个响应报文。SYN和ACK标识都为1,序列号seq为y,确认序列号ack为x+1.
3、A机器收到响应报问题,进行最后一次确认报文。ACK标识为1,序列号为x+1,确认序列号为y+1.

三次握手原因


image.png

两次握手导致问题


image.png

报文TTL生存时间会比TCP请求超时时间要长。如果存在从超时重发的情况,A和B机器已经完成数据传输并关闭连接之后,B机器才接收到超时重发请求,则会出现B机器单方面建立连接(A机器不是SYN_SENT状态,自动抛弃报文)。
如果为三次连接确认,则B机器还需要跟A机器进行确认。A机器不是SYN_SENT状态,自动抛弃报文。B机器长时间没有接收到A机器确认报文,也会导致建立连接失败。
(注意:最大连接数由服务器的最大文件句柄数 ulimit -n 可查看)

TCP断开连接

image.png

断开分四个步骤
1、A机器本方数据传输完毕,需要关闭连接,发送关闭报文给B机器(FIN标识为1)
2、B机器收到关闭报文之后,给A机器发送响应报问题。等B机器处理完数据,在发送FIN报文。A机器进入半关闭状态
3、B机器做好连接关闭前的准备,发送FIN报文给A机器,且B机器进入半关闭状态(CLOSE_WAIT状态)。
4、A机器发送针对B机器FIN的ACK报文,进入TIME_WAIT状态。经过2MSL,没有收到B机器传来的报文,则确认B机器收到ACK报文,TCP正式断开连接。

CLOSE_WAIT和TIME_WAIT

如果服务器出现大连COLSE_WAIT和TIME_WAIT状态,则会加重服务器负载。
需要提供针对性优化
主要方案:将TIME_WAIT调小,2MSL(两分钟)在目前超速网络状态之下是极大浪费。
方法:通过修改/etc/sysctl.conf配置文件调整。参数:net.ipv4.tcp_fin_timeout = 30 (建议低于30秒)

SQL优化

数据库请求响应都为100ms以内,秒级优化方案
1、建立高效且适合的索引
2、排查连接资源未显式关闭
3、合并短请求:合并请求有效减少连接次数。
4、合理拆分多个表join的SQL,若超过三个表则禁止join
5、使用临时表:将中间结果放入临时表,重新创建索引。再用临时表做后续操作。
6、应用层优化:数据结构优化,并发多线程改造。
7、改用其他数据库

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容

  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,054评论 0 8
  • 1. 基础知识 1.1 3种常见的计算机体系结构划分 OSI分层(7层):物理层、数据链路层、网络层、传输层、会话...
    Mr希灵阅读 19,877评论 6 120
  • 运输层协议概述 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是...
    srtianxia阅读 2,407评论 0 2
  • title: 网络基础学习总结(1) tags: 网络 categories:笔记 date: 2017-06-1...
    行径行阅读 2,518评论 0 3
  • Java知识点1、==和equals的区别基本类型比较==比较内容 equals比较地址值引用类型比较==比较地址...
    压抑的内心阅读 592评论 0 0