计算机网络个人小结

  1. 不同层的数据报的名称

    应用层: data

    TCP层: segment

    IP 层: packet

    MAC层: frame

  2. MTU vs MSS:

    MTU:一个网络包的最大长度,以太网中一般为 1500 字节。

    https://www.xiaolincoding.com/network/1_base/how_os_deal_network_package.html#linux-网络协议栈

    在以太网中,规定了最大传输单元(MTU)是 1500 字节,也就是规定了单次传输的最大 IP 包大小。

    当网络包超过 MTU 的大小,就会在网络层分片,以确保分片后的 IP 包不会超过 MTU 大小,如果 MTU 越小,需要的分包就越多,那么网络吞吐能力就越差,相反的,如果 MTU 越大,需要的分包就越少,那么网络吞吐能力就越好。

MSS:除去 IP 和 TCP 头部之后,一个网络包所能容纳的 TCP 数据的最大长度。

  1. Linux 常用命令
    netstat -napt 查看TCP 的连接状态。
    route -n 命令查看当前系统的路由表。
    arp -a 命令查看 ARP 缓存的内容

  2. ARP and RARP

    ARP: IP->MAC 在局域网中广播IP地址,若某设备IP地址match,会回复其MAC地址。注意在ARP缓存中若已有该IP的MAC地址,则无需广播。

    RARP: MAC->IP

  3. gateway, router, switch和hub

    参考 https://www.xiaolincoding.com/network/1_base/what_happen_url.html

  • 网关gateway 一般是连接两个网络做转换用。

  • 路由器router - 工作在网络层

    路由器和交换机是有区别的。

    因为路由器是基于 IP 设计的,俗称三层网络设备,路由器的各个端口都具有 MAC 地址和 IP 地址;

    而交换机是基于以太网设计的,俗称二层网络设备,交换机的端口不具有 MAC 地址。

    路由器基本原理

    路由器的端口具有 MAC 地址(只接收与自身地址匹配的包,遇到不匹配的包则直接丢弃。),因此它就能够成为以太网的发送方和接收方;同时还具有 IP 地址,从这个意义上来说,它和计算机的网卡是一样的。

    当转发包时,首先路由器端口会接收发给自己的以太网包,然后路由表查询转发目标,再由相应的端口作为发送方将以太网包发送出去。

    在网络包传输的过程中,源 IP 和目标 IP 始终是不会变的,一直变化的是 MAC 地址,因为需要 MAC 地址在以太网内进行两个设备之间的包传输。

  • 交换机switch 工作在MAC层。交换机的设计是将网络包原样转发到目的地。

    注意:计算机的网卡本身具有 MAC 地址,并通过核对收到的包的接收方 MAC 地址判断是不是发给自己的,如果不是发给自己的则丢弃;相对地,交换机的端口不核对接收方 MAC 地址,而是直接接收所有的包并存放到缓冲区中。因此,和网卡不同,交换机的端口不具有 MAC 地址。

    交换机的 MAC 地址表主要包含两个信息:一个是设备的 MAC 地址,另一个是该设备连接在交换机的哪个端口上。

    当 MAC 地址表找不到指定的 MAC 地址会怎么样?这种情况下,交换机无法判断应该把包转发到哪个端口,只能将包转发到除了源端口之外的所有端口上,无论该设备连接在哪个端口上都能收到这个包。这样做不会产生什么问题,因为以太网的设计本来就是将包发送到整个网络的,然后只有相应的接收者才接收包,而其他设备则会忽略这个包。

    此外,如果接收方 MAC 地址是一个广播地址,那么交换机会将包发送到除源端口之外的所有端口。

    以下两个属于广播地址:

    MAC 地址中的 FF:FF:FF:FF:FF:FF

    IP 地址中的 255.255.255.255

  • 集线器hub 工作在物理层。感觉就像一堆金属线的连接而已。收到包后群发到所有端口。

  1. 键入网址到网页显示期间发生了什么?

    https://www.xiaolincoding.com/network/1_base/what_happen_url.html#读者问答

    ①浏览器解析url

    ②生成一个http请求协议包,把协议包的发送委托给操作系统

    ③操作系统在发送协议包之前先要获取服务器的IP地址。如果在本地的浏览器缓存、操作系统缓存或者hosts文件中存在对应的IP地址,就不需要再访问本地的DNS服务器了。如果不存在,访问本地的DNS服务器,由本地DNS服务器对进行递归访问,即按照层级向下访问,最后得到IP地址。

    ④得到ip地址后。进行TCP连接,三次握手。

    ⑤握手之后,把请求层层封装,通过网卡将数据发送到交换机。交换机会进行校验以及查找交换表转发,到达路由器。路由器把MAC层扒皮,查看目的ip,然后根据路由表选择下一跳,再进行MAC层封装。重复这个过程,最后到达服务器。

    ⑥到达服务器后,会对数据包进行扒皮并且校验。使用FCS校验码校验二进制序列的正确性。在MAC层看目的MAC是不是自己,在网络层看目的ip是不是自己,同时知道上层协议是TCP还是UDP协议。在TCP中知道这是一个什么保文,请求保文、响应报文还是结束连接的报文。通过端口号知道这是交给那么应用进程的。

    ⑦应用进程知道你访问的是什么资源,那么就给客户端返回一个Http响应协议包,把资源封装在其中。通过同样的流程把数据返回给客户端。

    ⑧浏览器拿到数据后,对数据进行渲染,解码,变成了一个页面显示在浏览器上。

  2. 浏览器输入URL后回车,页面没有出现怎么排查问题?

    https://www.xiaolincoding.com/network/1_base/what_happen_url.html#读者问答

    最直接的办法就是抓包,排查的思路大概有:

    先确定是服务端的问题,还是客户端的问题。先确认浏览器是否可以访问其他网站,如果不可以,说明客户端网络自身的问题,然后检查客户端网络配置(连接wifi正不正常,有没有插网线);如果可以正常其他网页,说明客户端网络是可以正常上网的。

    如果客户端网络没问题,就抓包确认 DNS 是否解析出了 IP 地址,如果没有解析出来,说明域名写错了,如果解析出了 IP 地址,抓包确认有没有和服务端建立三次握手,如果能成功建立三次握手,并且发出了 HTTP 请求,但是就是没有显示页面,可以查看服务端返回的响应码,如果是404错误码,检查输入的url是否正确,如果是500,说明服务器此时有问题,如果是200,F12看看前端代码有问题导致浏览器没有渲染出页面。

    如果客户端网络是正常的,但是访问速度很慢,导致很久才显示出来。这时候要看客户端的网口流量是否太大的了,导致tcp发生丢包之类的问题。

    总之就是一层一层有没有插网线,网络配置是否正确、DNS有没有解析出 IP地址、TCP有没有三次握手、HTTP返回的响应码是什么。

8.关于TCP 3次握手:

https://www.xiaolincoding.com/network/1_base/what_happen_url.html#读者问答

输入http地址->dns域名解析拿到目标ip地址->tcp初始化syn包,进入syn_sent状态->ip层拼接ip头->arp协议获取路由器的mac地址->拼接mac头->网卡将网络包(syn包)发给路由器。这个过程就是第一个syn包发出去的过程,经过各个路由器转发后,到达了接收方,接收方就开始扒开mac头、ip头,然后送到tcp层,tcp协议栈检查tcp头是一个syn包,于是就进入syn_recv状态,然后回复syn、ack报文给对方。

注意:客户端发送给服务端的第一个网络包是tcp三次握手中第一个syn报文,也是要经过ip层,数据链路层,交换机,路由器。

  1. 关于网卡收包和发包的过程

    下面这个连接不错

    https://www.junmajinlong.com/coding/tcp_socket/

  2. 关于5种IO模型

    https://www.junmajinlong.com/coding/IO_Model/

相关推荐
qq_243050791 小时前
Netmask:网络掩码生成和转换程序!全参数详细教程!Kali Linux 教程!黑客渗透测试!
运维·网络·web安全·网络安全·黑客·渗透测试·kali linux
Zfox_2 小时前
应用层协议 HTTP 讲解&实战:从0实现HTTP 服务器
linux·服务器·网络·c++·网络协议·http
IT 青年3 小时前
计算机网络 (56)交互式音频/视频
计算机网络
乙己4079 小时前
计算机网络——网络层
运维·服务器·计算机网络
幽兰的天空11 小时前
介绍 HTTP 请求如何实现跨域
网络·网络协议·http
lisenustc11 小时前
HTTP post请求工具类
网络·网络协议·http
心平气和️11 小时前
HTTP 配置与应用(不同网段)
网络·网络协议·计算机网络·http
心平气和️11 小时前
HTTP 配置与应用(局域网)
网络·计算机网络·http·智能路由器
Mbblovey12 小时前
Picsart美易照片编辑器和视频编辑器
网络·windows·软件构建·需求分析·软件需求
北顾南栀倾寒13 小时前
[Qt]系统相关-网络编程-TCP、UDP、HTTP协议
开发语言·网络·c++·qt·tcp/ip·http·udp