现在的位置: 首页 > 综合 > 正文

unp笔记一 网络编程基础

2017年10月28日 ⁄ 综合 ⁄ 共 812字 ⁄ 字号 评论关闭

这几天一直看不下书啊,也没有学习的动力,闲着无聊,还是总结下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:返回内核自动生成的全新套接字,如果已连接的队列为空,则进程投入睡眠(假定套接字为默认的阻塞方式)。

抱歉!评论已关闭.