网络初窥

今天跟大家分享的是,自己对网络协议的理解。主要介绍网络协议中的,数据链路层,网络层,和传输层。

四层协议的概述

1.购物与四层协议

2.各层协议如何相互协作--封装,分用 (组包,拆包)

数据链路层

1.以太网帧报文头

2.arp协议,及演示

3.两台电脑如何mac地址进行通讯的

网络层

1.ip头部 ip地址 公网 私网

2.路由表

3.nat网络转换协议

4.ip路由观察

5.ip分片观察

介绍传输层(只介绍TCP)

1.tcp报文头

2.三次握手与socket

3.请求序列号,确认序列号,已经超时重传

4.socket与三层协议的关系及几个问题


四层协议的概述

1.购物与四层协议

购物与四层协议

先通过一个故事来简单描述一下四层协议的各自功能。

家里要买一个40米的大佛像,到了店铺a(邯郸),选好了样式,店铺a告知要从店铺b(广州)运货回来。于是就有了以下运佛的故事。

我们先看两个店铺(传输层)做了些什么?

总的来说就是稳定的端对端(广州  [源]--邯郸 [目的地])传输

1.店铺a先给店铺b打了个电话,更准确的说应该不是打电话,而是写信,走快递,来回三次信件(三次握手),沟通了一下佛像运输问题,要分块运输(MSS),以及店铺a本地的仓储大小(window);

2.店铺b通过快递公司,把一块佛像寄送给店铺a,店铺a收到后立马给店铺b打了个电话,告知已经收到(数据接收确认报文);

3.一次一辆装载佛像的汽车自燃了,店铺b很久(超时时间)没有收到店铺a的回复电话,就立马把这块佛像又发了一遍。(丢包重发)

4.最后店铺a收到了所有的佛像块,组装成了40米的大佛(数据有序组装)。

5.一次店铺a收到了序号为5,6,9,8序号的佛块(无序接收),最后店铺a直接打电话回复收到9号了(不用每次都回复,可以一批回复一次)

接着我们看看快递公司(网络层)做了些什么?

总的来说是不稳定的端对端传输

1.快递公司看了看快递(不关心发的是什么),发现一车可以装下,就不需要再分块了(ip分片);

2.广州快递公司看了看目的地邯郸(ip),就发送到了最近的快递中心,比如说是福建福州快递中心,福州中心又发送到了杭州中心,。。。到了北京中心,北京中心又发给石家庄中心,最后石家庄发给了邯郸中心,邯郸中心发现地址就在本市(ip在本局域网),就收下了快递。(路由)

最后我们看看快递员(数据链路层)做了些什么?

不稳定的点对点传输(石家庄-邯郸)

1.比如说石家庄快递员收到快递,发现目的地是邯郸,然后用百度地图定位(arp),根据导航送货到了邯郸中心。

最后出现了网上购物(应用层,http),我们不需要再和店铺打交道了。


2.各层协议如何相互协作--封装,分用 (组包,拆包)

现在了解了各层协议的大概功能,我再看看,各个协议之间是如何协作的?


封装过程

数据到达物理网络之前,会自上到下通过协议栈,每层协议都是通过添加自己的头部信息来实现本层协议的。



分用过程图

当帧到达主机,会沿着协议栈自底向上依次传递,各协议层通过处理帧中本层负责的头部数据,实现本层功能,并将帧上传到上层协议,直到应用程序。由此看出,只要我们掌握了各个头部信息,就能掌握各层的功能。


数据链路层

1.以太网帧报文


以太网帧报文

可以看出以太网帧限制了数据的大小最大为1500字节,这就是为什么ip层要分片。

2.arp协议,及演示

arp协议就是通过ip地址获取mac地址的报文。先看演示

先查看本地arp缓存表


本地arp缓存表

没有目的IP,接着我们用tcpdump监听,同时ping 10.252.68.118


arp协议监听

红色部分就是arp请求,和arp应答。

最后我们再看本地arp缓存发现目的地址已经缓存到arp缓存表中。


本地arp缓存表


3.两台电脑如何mac地址进行通讯的

mac地址通信

1.交换机如何工作的

线路上传输的是以太网帧(实际还有一层),以太网帧头部有源和目的地。

交换机工作原理:交换机维护了一张主机mac地址和交换机接口对应关系表。交换机在收到数据帧以后,会先记录数据帧中的源MAC的地址和对应的接口到表中,然后查看MAC地址表中是否有目标MAC地址的信息,如果有则将数据帧发送到对应的接口(单播),如果没有则将数据从非接收口发出去(广播)

2.两个用户之间信息传输流程

用户1想发送消息给用户2.并且知道了用户2的ip地址。

     1.用户1查看arp缓存表,如果找到则直接发送,如果没有则发送一个arp请求(广播)。询问ipxxx的mac地址是多少?

     2.交换机发现是广播,则将数据从非接收口发出。

    3.用户2发现ip地址与自己相同,则将自己的mac地址发送给用户1

   4.用户1收到后将mac地址存入arp缓存表中

3.如何获得ip

1.用户1的DHCP客户端(操作系统中的程序)先发送一个广播,寻找DHCP服务器。交换机收到报文,得到用户1的mac地址,与其端口绑定。交换机发现是广播,将消息分别发送到f1 f2接口(f0是报文发送方,不用再发送),特定格式的报文,只有DHCP服务器会回应。

2.DHCP服务器收到报文,从IP池中选址一个空闲IP地址,对应的网络掩码,缺省网关,域名服务器IP(DNS)。因为已经知道用户1的mac地址,就可以直接发送给用户1了。


网络层

IP头部


ip头部

16位总长度整个IP数据报的长度,但受MTU限制最大1480个长度,(ip头部20个字节)

16位标识唯一表示一次发送的数据报,数据包分片时,所有的分片数据中的16位唯一标识都一样

3位分片标志,第一位保留,第二位表示禁止分片,第三位表示更多分片,指这个分片后面还有分片,除了最后一个分片,其它都是1.

13位偏移,指的是数据偏移,实际偏移量是 13左移动3位,分片报文长度必须是8的倍数

8位协议 icmp 1 tcp 6 udp 17

IP地址:Ip=网段号+主机号

例如:10.252.71.172netmask255.255.252.0

ip地址

ip分为公有ip,私有ip,公有ip是全球唯一的,私有ip用局域网。

3个预留私有地址:

10.0.0.0– 10.255.255.255

172.16.0.0– 172.31.255.255

192.168.0.0– 192.168.255.255

IP路由

路由表

我们本机和路由器上都有路由表,主要功能是告诉计算机,要去目的地,下一跳怎么走。

路由选择过程:

1.完全匹配ip,没有匹配到走2

2.匹配相同网段,没有匹配到走3

3.默认路由网关

使用traceroute 查看跳转路径

traceroute观察跳转路径

traceroute 如果有**号,一般是服务器屏蔽了icmp报文,

traceroute 原理。 前面我们介绍ip头部时介绍过ttl也就是time to live, traceroute就是根据ttl,第一次发送时ttl为1,第二次为2,依次递推。 因为ttl每跳一次就会减1,做减法的路由器发现ttl为0时,就停止了转发,并向源发送主机,发送一条icmp报文,告述源主机报文失效了,这样我们就可以获得每个节点的路由器了。

跨网段通讯

了解了链路层,我们就可以把互联网的两个主机通讯串起来了。下面介绍一下,用户a是如何把一条以太网帧通过交换机,路由器,互联传送给服务器的。

1.用户a主机的ip层查看目的ip地址,从本地路由表中得出下一跳要去网关,于是ip地址写src:10.1.1.2 ,dst:4.4.4.4,mac地址写:src: aa-aa-aa-aa-aa-aa dst: bb-bb-bb-bb-bb-bb.

2.路由器发现目的ip不是本局域网,查路由表,下一跳到运营商路由器。ip地址写到 src:2.2.2.2 dst:4.4.4.4     mac地址写: src:bb-bb-bb-bb-bb-bb dst:运营商路由器mac地址。

3.多次跳转后到了目的主机的路由器,最后到了目的主机。


如果在同一个局域网中,有两个人同时访问了同一个远程服务,由于从路由器出去时把私有ip转换为公有ip,那么怎么区分发出请求的是哪台电脑?

于是就用到了nat转换

nat转换表

从图中看出,路由器为每个机器分配了不同的路由器端口号,来区分。


IP切片

ip切片

如图,如果我们要发送一个data为1473字节的icmp报文,就会被ip网络层切分成2和3两部分。演示如下:

ip切片演示

传输层(只介绍TCP)

tcp头部

SYN表示建立连接,

FIN表示关闭连接,

ACK表示响应,

PSH表示有 DATA数据传输,

RST表示连接重置。

URG紧急数据

因为有可选字节,所以需要头部报文长度

32位序号:我已经发送多少字节数据(不包括本次)

32位确认序号:我已经接收了多少字节数据。

MSS

MSS:Maxitum Segment Size 最大分段大小,分段的原因,为了能丢包重发(最小代价),只发丢失的,不用全发。

MTU: Maxitum Transmission Unit 最大传输单元

三次握手与socket函数

三次握手与socket

1.三次握手与socket函数

connect 在第二次通讯后返回,accept在第三次返回。

2.如果第三次回复丢失,如何处理?查到的理论知识,有兴趣的同学可以去查证一下

     1.超时时间内发送数据,既然已经发送数据,说明ack已经发了,可以正常链接

      2.超时时间内没有发送数据RST

3为什么是3次?

为什么是三次,不是两次 为了防止已过期的syn请求被服务器接收后占用服务器资源,已过期是指客户端先发了个syn请求,服务器没响应,然后客户端再发一次,成功和服务器通讯,并断开了链接。这时候第一次请求到了,服务器以为是新的请求,就分配了链接资源。同时三次也能证明双方的发送和接收是都没有问题的。

四次挥手发两次fin,是因为tcp是全双工的,双向发送,fin只能关闭自己的发送。


失败重传wireshark


socket与网络协议关系


socket就是一个 网络编程接口

socket帮我们封装了传输层,网络层,数据链路层的实现

问题

•1.服务器accept接收到的套接字会不会占用主机端口号?

•2.服务器最大长连接数是多少?

•3.服务器如何实现几十万,上百万的长连接数?(不考虑内存,cpu)

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

推荐阅读更多精彩内容

  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,051评论 0 8
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,037评论 6 174
  • 一、网络层提供的两种服务 1.虚电路VC(virtual circuit) 两个计算机进行通信时,应先建立连接(但...
    dmmy大印阅读 1,748评论 0 0
  • 第二章 物理层 频分复用:频分复用的用户在同样的时间占用不同的带宽资源(频率带宽) 时分复用:时分复用的用户在不同...
    PramaWells阅读 3,583评论 1 3
  • 周末收拾完屋子,洗完衣服,已经11点多了。那么就做碗面犒劳一下自己吧。 先煎鸡蛋。我今天想吃老一点的,就把鸡蛋黄戳...
    小颖lucky阅读 523评论 2 2