深入了解计算机系统读书笔记

读书笔记——网络编程篇:
一:将网络当做一个外接I/O设备
网络编程计算机组成
ALU:CPU算数逻辑运算单元
DMA:(Direct Memory Access,直接存储器访问)指外部设备不通过CPU而直接与系统内存交换数据的接口技术。这样数据的传送速度就取决于存储器和外设的工作速度。
主存—内存关系
1.1网络分级
局域网—集线器,复制每个数据包到每个口
集线器
局域网通过网桥联合:
局域网通过网桥
网桥已经开始学会丢弃帧了,与路由器区别是他是在数据链路层工作,路由器在网络层。
局域网到广域网
路由器连接局域网、广域网
1.2协议
协议是为了让不同网络间也能互相通讯,实现了两点:
命名(IP/MAC地址)
传送(包头+有效载荷)
传送数据包八个步骤:
(1)客户端触发系统调用,从虚拟地址复制数据到内核
(2)附加协议报头+LAN1帧头,分别寻址最后主机B和路由器,
(3)LAN1适配器复制帧到网络上
(4)到达路由器,路由器读取,传送到协议软件
(5)路由器提取IP地址,作为索引确定转发路径,剥落旧帧头,换上新帧头。
(6)路由器LAN2复制帧到网络
(7)到达主机B读取帧,上传到协议软件
(8)解开包头,帧头,复制数据包到虚拟地址空间
传送数据包
1.3socket所在层数
socket
图中套接字调用便是socket,sendto之类函数所在位置,了解这个对于网络编程我觉得挺重要的。之后会写一个博客单独说一下。
2.1TCP/IP-UDP相关
2.1.1IP地址
struct in_addr
{
unit_32 s_addr;//32位无符号整形代表IP地址,IPV4下。这就是为什么近年来IP地址越来越少的原因之一,IPV6即将抵达
}
为了统一,网络字节序是大端字节,如果想要探究一下自己电脑的字节序,可以用强制转换类型,将4字节的int类型转换成1字节的char,去读取,看看第一个字节是什么。
htonl主机(host)转网络(net)
ntohl网络转主机
点分十进制和IP地址转换
inet_pton(点分十进制转网络)返回>0成功,网络字节序
inet_ntop(网络转点分十进制)返回一个指向字符串指针
不过我一般使用
inet_addr 将字符串形式的IP地址 -> 网络字节顺序 的整型值
inet_ntoa 网络字节顺序的整型值 ->字符串形式的IP地址
2.2网络进程间通讯
首先通信的基础:IP地址+端口,客户端端口一般是随机,服务器端口为指定,和服务对应
十二点了=-=先写到这

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值