目录
课程链接
协议
分层模型
网络传输数据封装流程
以太网帧和ARP请求
IP协议
TCP协议
BS与CS模型对比
套接字
网络字节序
IP地址转换函数
sockaddr地址结构
socket模型创建流程
socket()和bind()
listen()和accept()
课程链接
03-协议_哔哩哔哩_bilibili
协议
分层模型
网络传输数据封装流程
组包、拆包,只需要记住一个数据无法单纯的进入网络,需要进行包装一些数据才能发送到网络中,而且这些数据的包装都是系统完成,然后通过网卡进行发送,将数据发送到网络环境中去,接收数据的主机的网卡接收到后,系统进行拆包处理
以太网帧和ARP请求
以太网帧中重点内容是:MAC地址
ARP:通过IP地址获取对方MAC地址
IP协议
IP版本:IPV4和IPV6
TTL:time to life 路由节点的跳转上限
场景:信息发送到B主机的路由断开,导致信息一直在其他路由上传来传去,经过一个路由器TTL减1,减到0时路由就舍弃这一段数据
TCP协议
对上面的几种信息了解即可
BS与CS模型对比
套接字
套接字成对存在,并且理解下面的原理图,一个文件描述符管理着两个缓冲区,一个读和一个写
网络字节序
网络字节序:大端模式--因此需要转换
IP地址转换函数
如果以上面的函数转换一个IP地址很麻烦,因此linux提供了一个简单的IP转换函数
inet_pton的使用方法
sockaddr地址结构
struct sockaddr是老版本的,struct sockaddr_in是新版本,因此我们使用新版本的时候需要转换为老版本
INADDR_ANY是取电脑有用的IP地址,但是有时候我们可以使用一个确定的IP地址通过命令行传参
socket模型创建流程
目的:建立多个客户端和服务器,客户端发送小写英文,服务器返回大写英文
此通信中产生了几个套接字:3个
listen的作用是设置一次性能连接服务器的客户端个数, 而不是监听的作用,这个作用是为了设置产生accept的作用,第一个创建的socket相当于经理,listen表示经理需要的迎宾小姐个数,当客户端socket来时,accept获取经理中的迎宾小姐,一个客户端一个迎宾小姐,此时对于一个客户端来说,共产生了3个客户端,因此accept需要获取第一个创建的socket(相当于需要获取经理的命令)
socket()和bind()
bind()函数建议客户端和服务器都绑定IP地址和端口号
listen()和accept()