TCP/IP 插口层

  插口层与协议的具体实现相关。

引言:重点是插口层和相关的系统调用的实现是最关键的问题。

splnet处理,重点要理解插口层和系统调用的实现。

Socket结构

一直被广泛使用的socket结构和插口层的使用有很大的关系。插口代表一条通信链路的一端,抽象的说就像绳子的一头,绳子代表存储和指向链路有关的信息。

理解成网线的插口比较好。。。今天华为被怼了,很不爽。特朗普有病。。包括贸易战的大节奏。

getsocketopt和setsocketopt 的系统调用能修改大部分的插口选项。。。。

struct socket定义 不必要记 关注它定义了哪些结构。

SS_NBIO :内核不阻塞进程。

SS_ASYNC:内核发送SIGIO信号给so_pgid标识。

主要看函数的调用和进程之间的关系。很无聊。只是一个载体。

系统调用

每一个系统调用均被编号,当进程执行一个系统调用时,硬件被配置或传输控制给一个内核函数。

内核函数syscall,是为了找sysent结构。

ssocket可以作为系统调用的例子。只要看三点就可以。

1建立服务器客户端和客户,终止类系统调用。2输入输出类系统调用。3管理类系统调用。

网络系统调用流程要仔细看。socket主要是开或关,读写,监听,连接。

进程,描述符和插口

这三个名称是为了给系统调用做基础的。三个名词,只有描述符比较陌生。比较无聊。。。

socket系统调用

socket系统调用生产一个新的插口,并将制定的协议连接起来。

socket的系统调用是一个简单的例子,关系到很多函数。没什么作用,无聊。

socket只是一个例子,插口层的存在在哪里是更重要的事情。

bind系统调用

bind系统调用将本地的网络运输层地址和插口层联系起来。进程需要绑定要地址,因此进程在接受TCP和接受UDP之前必须调用bind函数。

寻找插口和本地地址的连接。

listen系统调用

通知协议进程准备接受插口的请求。当由插口来了,listen就负责通知。

还有tsleep函数,wakeup函数,accept函数sonewconn,soisconnested函数

connect系统调用

服务器进程调用listenhe accept调用等待远程初始化。进程愿意自己初始化,则调用connect函数。

重点是connect处理过程。

shutdown系统调用

顾命思意就是,就是关闭插口通道。

close系统调用

关闭各类描述符。

小结

本节主要讲了网络操作相关的系统调用。但是插口层的他妈的具体在哪里,我目前还不是很明白。。。希望以后的学习中,可以补齐。

今天状态不佳,。。