TCPIP网络编程基础知识

1. Socket

1)Socket简介

a)一种编程接口,用于不同计算机之间通信的接口

b)一种特殊的文件描述符

c)并不局限于TCP/IP协议

d)面向连接和面向无连接的Socket都存在

e)独立于具体协议,TCP和UDP都可以使用

2)Socket类型

a) 流式套接字(SOCK_STREAM)

提供面向连接、可靠的数据传输服务,数据无差错、无重复的发送发送且按发送顺序接收。内设置流量控制。数据被看作是字节流,无长度限制。

b)数据包套接字(SOCK_DGRAM)

提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收。

c)原始套接字(SOCK_RAW)

可以对较低层次协议如IP、ICMP直接访问。

3)Socket的位置

2. IP地址

1)IP地址是Internet中主机的标识

a) Internet中的主机要与别的机器通信必须具有一个IP地址

b)IP地址为32位(IPV4)或者128位(IPV6)

c)每个数据包必须携带目的的IP地址和源IP地址,路由器依靠此信息为数据包选择路由

2)表示形式:常用点分形式,如192.168.1.1.245,最后都会转换为一个32位的无符号整数。

3)IP地址分类

IP地址=网络号 + 主机号,目前有如下分类:

举例:IP地址:192.168.1.1.245,192转换为二进制为 1100 0000,所以该类地址为C类IP地址。

注1:网络号用于区分不同网络。

注2:特殊IP

a)127.0.0.1 回环地址

b)192.168. 局域网

c)主机号全为“1”的ip地址,叫做广播地址。所谓广播,指同时向同一子网所有主机发送报文。

D)主机号全为“0”的ip地址,叫做网络号地址。网络号地址代表这个网络段本身。

4)掩码,网络全为1,主机号全为0的地址。作用计算出网络号地址。

示例: 本地主机ip为192.168.1.245,掩码为255.255.255.0。

掩码 & ip地址 = 网络号,所以本地主机所在的网络号地址为:

192.168.1.245 & 255.255.255.0 = 192.168.1.0

3. 端口号

为什么要引入端口号?举一个例子即可明白。

A计算机中进程m与B计算机中进程n通信,A计算机根据ip地址可找到B计算机,可是如何查找到B计算机中进程n?这就是端口号的作用区分进程。

1)要进行网络通信,必须先申请一个端口号,

2)一个端口只能分配一次,

3) 端口号一般由IANA (Internet Assigned NumbersAuthority) 管理

4)从网络层接收到数据之后,就会检查数据包的目的端口,送给该端口号对应的进程

5)众所周知端口:11023(1255之间为众所周知端口,256~1023端口通常由UNIX系统占用)

常见的保留端口号如下:

·FTP: 21

·TELNET: 23

·SMTP: 25

·DNS: 53

·TFTP: 69

·HTTP: 80

已登记端口:1024~49151

动态或私有端口:49152~65535

4. 字节序

1)不同类型CPU的主机中,内存存储多字节整数序列有两种方法,称为主机字节序(HBO):

a)小端序(little-endian)-低序字节存储在低地址中,如Intel、AMD等芯片厂商

b)大端序(big-endian)-高序字节存储在低地址中,如ARM、Motorola等

2)网络中传输的数据必须按网络字节序,即大端字节序

3)在大部分PC机上,当应用程序将整数送入socket前,需要转化成网络字节序;当应用程序从socket取出整数后,需要转化成小端字节序。

注:在实际编程中无论是Intel还是ARM都有转化成网络字节序这一步,按理来说只有Intel需要这一步,ARM不需要,但是Linux为了编程的统一规范,都有这一步,只不过Intel这一步为真操作,ARM为伪操作。

4)大端序图例说明

注:地字节序是低字节序。

小端序:与大端序相反。

5)字节序转换函数

把给定系统所采用的字节序称为主机字节序。为了避免不同类型主机之间在数据交换时由于对于字节序的不同而导致的差错,引入了网络字节序。

a)主机字节序到网络字节序

u_long htonl (u_longhostlong);

u_short htons (u_short short)

b)网络字节序到主机字节序

u_longntohl (u_long hostlong);

u_shortntohs (u_short short);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: TCP/IP网络编程是基于TCP/IP协议簇进行网络编程的技术手段。尹圣雨的《TCP/IP网络编程》是一本对该技术进行详细讲解的书籍。 本书内容涵盖了TCP/IP协议栈的基础知识、套接字编程、网络编程基础、高级IO编程、TCP协议实现、UDP协议实现等方面的内容。全书分为三个部分,分别为基础篇、网络篇和进阶篇。每个章节都深入浅出地解释了相关知识点,并提供了丰富的示例和代码。 在基础篇,读者将学习TCP/IP协议栈的结构及其各层协议,socket编程的基础知识,socket函数族的使用方法等内容。网络篇则主要介绍Linux网络编程的基础、套接字API的使用方法、网络编程的各种常见问题和解决方法等。进阶篇则包含更深入的内容,如高级IO编程、多路复用机制、网络应用开发等。 本书的特点是通俗易懂,引导读者逐步深入学习网络编程。同,该书提供了大量示例代码,可供读者实践,帮助读者更好地理解和应用书内容。本书适合网络编程初学者以及已经有一定经验的开发者阅读。 ### 回答2: 《TCP/IP网络编程》是一本网络编程必备的经典著作,作者为尹圣雨。本书详细介绍了TCP/IP网络编程基础知识以及应用实例,适合网络编程初学者和有一定网络编程经验的开发者。 书首先介绍了TCP/IP网络协议栈各层的功能和作用,包括物理层、数据链路层、网络层、传输层和应用层等。其次,介绍了如何使用Socket API进行网络编程,包括Socket编程模型、Socket编程基础、套接字类型、套接字地址等内容。在此基础上,详细介绍了TCPUDP网络协议的使用,包括TCP的三次握手、数据传输和四次挥手等,UDP的使用和应用场景等。 书还涵盖了网络编程常见的一些问题和应用实例,如如何进行网络数据传输和接收、网络通信协议设计、网络应用程序设计等。此外,书还提供了大量的示例代码,方便读者进行实践和练习。 总而言之,本书系统全面地介绍了TCP/IP网络编程的理论和实践,是网络编程学习和实践的重要参考书籍,并且对于网络编程开发者来说是不可或缺的参考资料。 ### 回答3: TCP/IP网络编程是一种网络编程的技术,该技术常用于开发网络应用程序。《TCP/IP网络编程》是一本由尹圣雨著作的网络编程指南,它提供了深入理解网络编程的内容和实例,使读者能够更好地了解和应用TCP/IP协议族,以便构建高性能、可靠及安全的网络应用。 这本书从浅入深地介绍了TCP/IP协议栈的必要知识,包括网络基础、网络协议、套接字编程等内容,同还讲解了高级主题,例如多路复用、异步I/O和网络安全等。 此外,本书也提供了大量实用程序的代码示例和详细解释,让读者通过实践来理解网络编程的实现。 总之,TCP/IP网络编程尹圣雨pdf的价值在于其详尽的介绍了网络编程基础知识、高级主题和实用技巧,同还提供了实用的示例代码和解释,使读者能够提高网络编程能力及技术水平,从而更好地运用TCP/IP协议构建安全可靠的网络应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值