Linux下网络编程概述
Linux下网络编程概述
一.网络知识概述
网络程序和普通程序最大的区别是网络程序由两部分组成:客户端和服务器端。
客户端:在网络程序中,如果一个程序主动和外面的程序通信,那么我们就把该程序称为客户端程序。
服务器端:和客户端对应的程序即为服务器端;被动地等待外面程序来和自己通信的程序即为服务器端程序。
TCP:(Transmission Control Protocol 传输控制协议)TCP是一种面向连接的、可靠的、基于字节流的传输层(Transport layer)通信协议,由IETF的RFC 793说明(specified)。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重要的传输协议。
UDP:(User Datagram Protocol用户数据包协议)UDP是 OSI 参考模型中一种面向无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。它是IETF RFC 768是UDP的正式规范。
二.Socket编程概述
1. 什么是socket
Socket是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。
Socket接口设计者最先是将接口放在Unix操作系统里面的。网络的 Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返 回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。
常用的Socket类型有两种:流式Socket (SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。另外还有一种socket,称为原始socket(SOCK_RAW)。
2. 建立socket
为了建立Socket,程序可以调用Socket函数,该函数返回一个类似于文件描述符的句柄。socket函数原型为:
int socket(int domain, int type, int protocol);
domain指明所使用的协议族,通常为PF_INET,表示互联网协议族(TCP/IP协议族);type参数指定socket的类型: SOCK_STREAM 或SOCK_DGRAM,Socket接口还定义了原始Socket(SOCK_RAW),允许程序使用低层协议;protocol可赋值为IPPROTO_UDP、IPPROTO_TCP,但通常赋值为"0",因为type参数
相关文档:
Linux 汇编语言开发指南
文档选项
<tr
valign="top"><td width="8"><img alt="" height="1" width="8"
src="//www.ibm.com/i/c.gif"/></td><td width="16"><img alt="" width="16"
he ......
USB 内核(USB驱动,USBD )处于系统的中心,对于它进行研究是能够进行USB驱动开发(包括客户驱动和主机驱动)的第一步。它为客户端驱动和主机控制器驱动提供了主要数据结构和接口函数,主要有四类功能:客户端驱动管理,USB设备的配置和管理,主机控制器的管理,协议控制命令集和数据传输的管理。具体代码主要集中在 linux ......
使用 Squid 代理服务器
Squid 是一种代理服务器,它实现了对 HTTP、FTP 和 Gopher 协议的缓存。Squid 能够使用访问控制列表(Access Control List,ACL)来允许或拒绝访问。Squid 具备强大的可配置能力以及鲁棒性,而且用户会发现,该软件非常容易学习。更好的是,可将 Squid 配置为透明代理,即好像用户根本不 ......
在公司里面一直都用到linux操作系统,而公司里面用到的是centos,我自己电脑上安装的是ubuntu,而centos一般用于服务器,对于学习linux来说有点不太使用,所以我考虑把ubuntu换成fedora,当然不是说ubuntu不好,只是想换一个版本玩玩.^_^
可是接着问题就来了,fedora是怎么都安装不上,在网上搜索了一些资料,都不太适用, ......