第十三章学习笔记
第十三章 TCP/IP和网络编程
13.1TCP/IP协议
TCP/IP协议
TCP代表传输控制协议,IP代表互联网协议。目前有两个版本的IP,即IPv4和IPv6。IPv4使用32位地址(目前使用最多),IPv6使用128位地址。
TCP/IP的组织结构氛围几个层级,通常称为TCP/IP堆栈
Tcp/ip堆栈

• 顶层是使用TCP/IP的应用程序。用于登录到远程主机的ssh,用于交换电子邮件的mail、用于Web页面的http等应用程序需要可靠的数据传输。通常,这类应用程序在传输层使用TCP。另一方面,有些应用程序,例如用于查询其他主机的ping命令,则不需要可靠性。这类应用程序可以在传输层使用UDP来提高效率。
• 具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议。他们与 TCP 或 IP 的关系紧密,是互联网必不可少的组成部分。TCP/IP 一词泛指这些协议,因此,有时也称 TCP/IP 为网际协议群。
• 传输层负责以包的形式向IP主机/接收来自IP主机的应用程序数据。进程和主机之间的传输层或其上方的数据传输只是逻辑传输。实际数据传输发生在互联网(IP)和链路层,这些层将数据包分成数据帧,以便在物理网络间传输。
13.2网络和主机字节序
计算机可以使用打断字节序,也可以使用小段字节序。在互联网上,数据是中按网络序排列,这是大端。在小端机器上,可在主机序和网络序之间转换数据。
13.3TCP/IP网络中的数据流
应用层—>传输层—>IP网络层—>网络链路层
13.4网络编程
服务器 — 客户机计算模型
在服务器 — 客户机计算模型中,我们首先在服务器主机上运行服务器进程。然后,我们从客户主机运行客户及。在UDP中,服务器等待来自客户机的户籍包,处理数据包并生成对客户及的相应。在TCP中,服务器等待客户机连接。客户机首先连接到服务器,在客户机和服务器之间建立一个虚拟电路。
1、套接字地址

2、套接字API
服务器必须创建一个套接字,并将其与包含服务器IP 地址和端口号的套接字地址绑定。它可以使用一个固定端口号,或者让操作系统内核选择一个端口号(如果 sin port为0)。为了与服务器通信,客户机必须创建一个套接字。对于UPD套接字,可以将套接字绑定到服务器地址。如果套接字没有绑定到任何特定的服务器,那么它必须在后续的 sendto()/recvfrom()调用中提供一个包含服务器IP 和端口号的套接字地址。
socket() //船舰一个套接字并返回一个文件描述符
• int udp_sock = socket(AF_INET,SOCK_DGRAM,0)
创建一个用于发送/接收UDP数据报的套接字
• int tcp_sock=socket(AF_INET,SOCK_STREAM,0)
创建一个用于发送/接收数据流的面向连接的TCP套接字
13.4 主机名和IP地址
如果打算在不同的主机上运行服务器和客户机,服务器端口号由操作系统内核分配,则需要 知道服务器的主机名或IP地址及其端口号。如果某台计算机运行TCP/IP,他的主机名通常记录在/etc/hosts/文件中。
在name数组中返回计算机的主机名字符串。但是他可能不是用点记法表示的完整正式名称,也不是其IP地址。
实践截图:




浙公网安备 33010602011771号