unp笔记一 网络编程基础

这几天一直看不下书啊,也没有学习的动力,闲着无聊,还是总结下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
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值