计算机网络基础

一、计算机网络体系结构

计算机网络体系结构图

二、物理层

1. 物理层主要任务

物理层考虑的是怎样才能在连接各台计算机的传输媒体上传输数据的比特流,确定与传输媒体的接口有关的特性:

  • 机械特性(引线数目等)
  • 电气特性(电压高低,阻抗匹配)
  • 功能特性(某一电平的电压表示何种意义)

2. 传输方式

  • 电路交换:专用的物理通信路径
  • 报文交换
  • 分组交换
    • 虚电路
    • 数据报

三、数据链路层

1. 数据链路层任务

为网络层提供可靠的数据传输、链路管理、帧定界、帧同步与透明传输、流量控制和差错控制。

2. 基本数据单位

3. 主要的协议

以太网协议

四、网络层

1. 网络层任务

实现异构网络互联、路由与转发、拥塞控制。

2. IPv4地址分类

IPv4地址分类
  • 主机号全为1,表示本网络上的广播地址,不用作主机的IP地址
  • 主机号全为0,表示本网络本身,不用作主机的IP地址。

3. IP协议(网际协议)

IP协议族包含配套的协议:

  • ARP(地址解析协议):将IP地址转换为MAC地址。
  • ICMP(网际控制报文协议):给主机和路由器报告差错和异常情况,分为询问报文和差错报文。

4. 路由选择协议

  • 内部网关协议(IGP):
    • RIP:与相邻路由器交换整个路由表
    • OSPF:与全部路由器交换相邻节点链路状态
  • 外部网关协议(EGP):
    • BGP:寻找的并非最佳路由。路由更新时,BGP只发送更新的路由。

五、传输层

传输层任务

提供进程之间的端到端的逻辑通讯、差错检测、UDP与TCP。

UDP

无连接尽最大努力交付,支持广播和多播(而TCP不支持)

TCP

有连接、一对一、可靠、全双工通信

TCP的三次握手建立

TCP建立
  • 第一步:客户机的TCP首先向服务器的TCP发送一个请求报文段,这个特殊报文段不包含应用层数据,其SYN位置为1。另外,客户机会随机选择一个起始序号seq = x(连接请求报文不携带数据,但要消耗一个序号)
  • 第二步:服务器收到请求报文后,若同意连接,则向客户机发回确认,并为该TCP连接分配TCP缓存和变量。在确认报文中,SYN和ACK都置为1,确认号字段的值为x + 1,并且服务器随机产生起始序号seq = y(确认报文不携带数据,但也要消耗一个序号)。
  • 第三步:当客户机收到确认报文段后,还要向服务器给出确认,并且也要给该连接分配缓存和变量。这个报文的ACK为置为1,序号字段为x + 1,确认号字段为ack = y + 1

TCP四次挥手释放

TCP释放
  • 第一步:客户机打算关闭连接时,发送一个连接释放报文段,并停止发送数据,主动关闭TCP连接,该报文字段的FIN被置为1,seq = u,它等于前面已经传送过的数据的最后一个字节序号加1(FIN报文段不携带数据,但也要消耗一个序号)。TCP是全双工的,即可以想象为一条TCP连接上有两条数据通路。发送FIN报文时,发送FIN的一端不能再发送数据,即关闭了其中一条数据通路,单对方还可以发送数据。
  • 第二步:服务器收到连接释放报文段后即发出确认,确认号是ack = u + 1,而这个报文段自己的序号是v,等于它前面已经传送过的数据的最后一个字节序号加1。此时客户端到服务器这个方向的连接就释放了,TCP连接处于半关闭状态。但服务器发送数据,客户机仍要接收,即从服务器到客户机这个方向的连接并未关闭。
  • 第三步:若服务器已经没有要向客户机发送的数据,就通知TCP释放连接,此时发出FIN = 1的连接释放报文段。
  • 第四步:客户机收到连接释放报文段后,必须发出确认。在确认报文段中,ACK位被置为1,确认序号ack = w + 1, 报文序号seq = u + 1。此时TCP连接还未释放,必须经过时间等待计时器设置的时2MSL后,客户机才进入连接关闭状态。

注:为什么要等待2SML?

  • 如果客户机不等待2SML,若客户机返回的最后确认报文已丢失,则服务器不能进入正常关闭状态,而此时客户机已经关闭,也不可能再重传。
  • 客户机在发送最后一个确认报文后,再经过2MSL才可以保证本连接持续时间内所产生的所有报文段从网络中消失。

SYN攻击

三次握手中,服务器发送SYN-ACK后等待客户端发送ACK,此时服务器处于SYN-RCVD状态。SYN攻击指的是在短时间内伪造大量不存在的IP地址,向服务器不断发送SYN数据段,服务此时会回复确认包,由于源地址不存在,服务器需要不断的重传直至超时,这些伪造的SYN长时间占用未连接队列,正常的SYN请求被丢弃,导致目标系统运行缓慢。
防御SYN攻击可以使用:

  • 缩短超时时间
  • 增大最大半连接数
  • 过滤网关

TCP可靠传输机制

  • 序号
  • 确认
  • 重传

TCP流量控制

滑动窗口机制

TCP拥塞控制

  • 慢开始
  • 拥塞避免
  • 快重传
  • 快恢复

TCP KeepAlive

当TCP连接中一方出现掉电、死机等异常情况时,TCP连接未来得及正常释放,连接的另一方并不知道这个问题,会一直维护这个连接,造成系统资源的浪费。可以在传输层利用TCP的KeepAlive机制。
TCP KeepAlive基本原理是隔一段时间给对方发一个探测包,如果对方收到回应并发送ACK,则认为连接存活,否则在重试次数还没收到回应,则丢弃该TCP连接。

六、应用层

1. 应用层协议服务器熟知端口

HTTP:80
DNS:53
FTP:控制链接端口21,数据链接端口20
STMP:25
POP3:110

2. HTTP协议

(1)报文结构

HTTP请求报文和响应报文的区别是开始行不同

请求报文
请求报文格式
  • 请求方法:
    • POST(传输实体主体)
    • GET(获取资源)
    • HEAD(获得报文的首部,它和GET方法一样,只是不返回报文主体部分)
    • OPTIONS(询问支持的方法)
    • CONNECT(要求用隧道协议连接代理服务器)
  • 请求头部
    • Connection:该字段为Close表示使用非持续连接,为Keep-Alive表示持续连接(默认)。
    • Cookie:由服务器生成,由客户端保存
    • Content-Type:用于表明发送数据流的类型和网页的编码,multipart/form-data(表单)
    • Transfer-Ecoding:传输报文主体时采用的编码方式
响应报文
响应报文格式
  • 状态码
    • 1XX:信息性状态码(如:接收到请求正在处理)
    • 2XX:成功
    • 3XX:重定向
    • 4XX:客户端错误
    • 5XX:服务器错误
  • 请求头部
    • Location:一般该字段配合3XX:Redirection的响应,提供重定向的URI。

(2)HTTPS

HTTP通信使用明文内容可能被窃听;不验证通信方的身份;无法证明报文的完整性。HTTPS添加了加密和认证机制:

  • HTTPS通信部分接口使用SSL和TSL协议。
  • 加密:使用混合加密方式,在交换密钥环节使用公开密钥加密方式,之后建立通信交换报文阶段使用共享密钥加密方式。
  • 认证:使用由数字证书认证机构(CA)和其相关机关颁发的公开密钥证书。
  • HTTPS比HTTP慢2到10倍。

(3)JSON

JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。

  • {} 双括号表示对象
  • [] 中括号表示数组
  • "" 双引号内是键或值
  • JSON能够处理的数据类型有false/null/true/对象/数组/字符串这7种类型
  • 不管是键或值最好都用双引号引起来

(4)HTTP2.0

HTTP2.0和HTTP1.1的区别

  • 使用多路复用:多个请求可以在同一个连接中并行执行(不像HTTP1.1中的一个连接需要等待上一个请求完毕才能请求下一个)
  • Header压缩:降低传输头部产生的流量。
  • 服务端推送:服务端推送能把客户端所需要的资源伴随着index.html一起发送到客户端,省去了客户端重复请求的步骤。

HTTP1.0和HTTP1.1的区别

  • 长连接:在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。默认开启keep-alive。
  • 允许只请求资源的某个部分:在请求头引入了range域,允许只请求资源的某个部分。
  • 引入了更多的缓存控制策略。

3. URI和URL

  • URI(统一资源标识符):某个协议类型表示的资源的定位标识符,如:
file://ftp.linkwan.com/  (也是URL)
http://homepage.yesky.com/175/2603675.html (也是URL)
tel:+1-816-555-1212   (这个就不是URL啦)
  • URL(统一资源定位符)
  • URI用来标识某一互联网资源,而URL用来表示资源在互联网上所处的位置。可见URL是URI的子集。

4. Socket编程

Socket是对TCP/IP协议族的一种封装,是应用层与TCP/IP协议族通信的中间软件的抽象层。利用三元组(ip地址,协议,端口)就可以唯一标识网络中的进程。
一个简易的 Server 的流程如下:

  • 1.建立连接,接受一个客户端连接。
  • 2.接受请求,从网络中读取一条 HTTP 请求报文。
  • 3.处理请求,访问资源。
  • 4.构建响应,创建带有 header 的 HTTP 响应报文。
  • 5.发送响应,传给客户端。

5. 浏览器输入 url 到页面显示的过程

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

推荐阅读更多精彩内容

  • 原文地址-程序员的自我修养(2)计算机网络 几乎所有的计算机程序,都会牵涉到网络通信。因此,了解计算机基础网络知识...
    EwdAger阅读 1,505评论 0 4
  • 近期把计算机网络的主要章节看了一下,整理出的知识点主要是TCP/IP四层模型每一层的具体细节等。应用层,运输层,网...
    随时学丫阅读 1,166评论 0 1
  • 运输层协议概述 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是...
    srtianxia阅读 2,405评论 0 2
  • 引言 先来讲讲我自身的感受,偶然看到知乎上一位刚入学的学生问如何学习计算机网络这门课,我毕业多年,依稀还能记得这门...
    OzanShareing阅读 1,632评论 0 3
  • 让每一个孩子都有一个属于自己的童年、帮助孩子找到发展的生长点; 让每一个孩子都...
    格扎旺索阅读 695评论 0 0