unp笔记一 网络编程基础

来源:互联网 发布:程序员客栈 专职 编辑:程序博客网 时间:2024/06/13 23:07

这几天一直看不下书啊,也没有学习的动力,闲着无聊,还是总结下unp前面几章的知识。

1、简介

PDU:协议数据单元,在网络各层中交换的信息单元就叫PDU。例如TCP层的PDU就是tcp分节。


应用层实体之间交换的PDU为应用数据。

对TCP应用进程来说,交换的是没有长度限制的单个双向字节流。TCP层会自己把收到的字节流(从应用层收到的)进行分割,这功能由TCP自己实现。

对UDP应用进程来说,交换的是其长度不超过UDP发送缓冲区大小的单个记录。UDP层有多少就收多少。


Stevens很注意错误处理,这是个优点!!!


UNIX errno值,一般来说,系统调用出错,在返回出错值得同时会置errno的值,所以通过查看errno的值可以确定具体错误。


可以直接使用IP层、数据链路层进行应用编程。


标准的统一 :POSIX与开放团体组织走向一起。干脆就叫POSIX标准。


2、TCP、UDP

SCTP就先不管了


TCP是字节流协议,没有任何记录边界!!!没有记录边界!

TCP终止连接的TIME_WAIT状态。


3、套接字编程简介

地址结构

值结果参数 内核到用户进程

字节序


4、基本TCP套接字编程

各个函数的了解


socket:返回描述符,它具有和其他UNIX描述符一样的特性。进程调用socket,内核会创建一个相应的数据结构,即在进程表表项的一个数组的下标。(有点绕口,书上这么说的)file结构、socket结构和inpcb结构是一起分配和连接起来。

connect:调用connect指的是连接到某某地址去吧。如果调用前没有绑定地址,内核会自己确定源IP和源端口。如果是TCP的话,激发三次握手过程。如果是UDP,会记录外部地址。

bind:

listen:是非阻塞函数,执行成功就返回0,成功并不是指有连接来,而是开始监听,所以该函数是非阻塞的。

accept:返回内核自动生成的全新套接字,如果已连接的队列为空,则进程投入睡眠(假定套接字为默认的阻塞方式)。






0 0
原创粉丝点击