写在前面
下面的内容全部源于小林coding在结合自己的思考,挑了难点整理一下
- 端口
? 当设备作为接收方时,传输层则要负责把数据包传给应用,但是一台设备上可能会有很多应用在接收或者传输数据,因此需要用一个编号将应用区分开来,这个编号就是端口。
- mtu&mss
文章图片
- 寻址和路由
IP 协议的寻址作用是告诉我们去往下一个目的地该朝哪个方向走,路由则是根据「下一个目的地」选择路径。寻址更像在导航,路由更像在操作方向盘**。
- tcp/ip网络有哪几层
- 应用层
端口、有哪些协议
- 传输层
tcp/udp的区别
- 网络层
ip,arp,路由的概念,icmp(网络差错报文检测),ping、traceroute....
- 数据链路层
mac
- 键入网址到网页显示,期间发生了什么?
- http=>url域名解析,通过dns
- tcp=>建立tcp连接,三次握手,
https的话还要经历ssl层进行四次握手,先三次握手成功后再https握手
长连接问题的话,可以在过期时间前一直保持通信不断开,中间还有session,cookies机制
socket通过四元组发送接受数据
- ip=>根据ip寻求mac,arp,icmp(网络控制差错报文)
- mac
- 打包好的数据包从网卡出
- 经过交换机
- 经过路由器
- 到达目的ip
- 服务器拆包得到消息,根据消息响应内容再将数据包封装返还给客户端。
- Linux是怎么收发网络包的
【计算机网络笔记1】重点理解:
- 根据四元组「源 IP、源端口、目的 IP、目的端口」 作为标识,找出对应的 Socket,并把数据拷贝到 Socket 的接收缓冲区
- socket是在内核态,应用程序调用socket接口,要从用户态边到内核态
- 在网卡的时候注意是中断以及采用的NAPI 机制,它是混合「中断和轮询」的方式来接收网络包,它的核心概念就是不采用中断的方式读取数据,而是首先采用中断唤醒数据接收的服务程序,然后
poll
的方法来轮询数据。
- 当有网络包到达时,网卡发起硬件中断,于是会执行网卡硬件中断处理函数,中断处理函数处理完需要「暂时屏蔽中断」,然后唤醒「软中断」来轮询处理数据,直到没有新数据时才恢复中断,这样一次中断处理多个网络包,于是就可以降低网卡中断带来的性能开销。
文章图片
推荐阅读