《unix网络编程》(2)网络模型和协议概述
来源:互联网 发布:淘宝违规处罚 编辑:程序博客网 时间:2024/05/17 13:40
OSI模型
OSI(open system interconnection)开放系统互联模型是由ISO(国际标准化组织,International Organization for Standardization)定义的网络分层模型,共七层。
网络层由IPv4和IPv6两个协议处理。可以选择的传输层协议有TCP和UDP。上图的TCP与UDP之间留有空隙,表明网络应用可以绕过传输层直接使用IPv4或IPv6,这就是原始套接字(raw socket)。
这里所讲的套接字是从顶上三层(网际协议的应用层)进入传输层的接口。这里的焦点是:如何使用套接字编写使用TCP或UDP的网络应用程序。原始套接字甚至可以绕过IP层直接读写数据链路层的帧。
为什么套接字是从OSI模型顶上三层(网际协议的应用层)进入传输层的接口?
答案:这样设计两个理由:第一是顶上三层处理具体网络应用(FTP、Telent或HTTP)的所有细节,却对通信细节了解很少;底下四层对具体网络应用了解不多,却处理所有的通信细节:发送数据、等待确认、给无序到达的数据排序、计算并验证校验和等。第二,顶三层通常构成所谓用户进程,底下四层通常作为操作系统内核的一部分提供。Unix与其他现代操作系统都提供分隔用户进程与内核的机制,因此可见,第4和5层之间的接口是构建API的自然位置。
UDP
UDP的首部:
UDP伪首部:
12字节的伪首部是为了计算检验和而设置的。伪首部包含IP首部的部分字段,其目的是让UDP两次检查数据是否已经正确到达目的地。
TCP报文段
网络数据包封装格式:
IP数据报
IPv4数据报格式:
各个字段含义:
以太网帧格式
//以太网首部代码 struct ethernet_hdr { char dest_mac[6]; char src_mac[6]; short protocol; };
以太网帧中的数据长度规定最小46 字节,最大1500 字节,ARP 和RARP 数据包的长度不够46 字节,要在后面补填充位。最大值1500 称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包度大于拨号链路的MTU了,则需要对数据包进行分片fragmentation)。
- 《unix网络编程》(2)网络模型和协议概述
- 《unix网络编程》(7)socket概述
- 网络编程_网络模型概述和图解
- java网络编程--网络模型概述
- Java-网络编程(概述)-(网络模型)
- 26-网络编程-01-网络编程(网络模型概述)
- 网络协议和网络编程
- 2-22 网络协议分析及Linux网络编程模型
- UNIX网络编程 进程间通信概述
- UNIX网络编程——概述
- 网络编程模型综述 之 UNIX网络I/O模型
- UNIX 网络编程学习(二)I/O模型
- 《unix网络编程》(12)五种I/O模型
- 《Unix网络编程》笔记(I/O模型)
- 网络编程(网络基础,OSI参考模型,UDP传输协议,TCP传输协议,URL类和URLConnection类)
- unix编程---网络I/O模型
- unix编程---网络I/O模型
- unix网络编程------5种IO模型
- 基础练习 字母图形
- HDU ACM 1207 汉诺塔II
- Activity中finish()和onDestroy()的区别
- 【TCP/IP】IP:网际协议(寻址和路由)
- strstr函数
- 《unix网络编程》(2)网络模型和协议概述
- POJ 3641
- Strtol()详解
- mysql 导入时错误 #1062 –Duplicate entry '1' for key 'PRIMARY'
- hdu 1113 Word Amalgamation 字符串处理 ,加上哈希 ,水题~
- 复杂Oracle查询 限定查询+多表查询+统计查询+子查询
- NFS错误Starting NFS quotas: Cannot register service: RPC: Unable to receive; errno=Connection refused
- select、poll、epoll之间的区别总结[整理]
- 读取菜单键home键返回键的背光节点,控制其闪烁