主题:
简介:
参考:
C语言编程网之socket编程
图解TCP/IP
作者:
时间:
1.套接字的定义
定义:socket是计算机之间进行通信(网络编程)的一种约定或者一种方式,通过socket这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。
应用:web服务器和浏览器的请求和响应
注:read、write、文件描述符、句柄
2.Internet套接字
(1)SOCK_STREAM
SOCK_STREAM流格式套接字也称面向连接的套接字,在代码中使用SOCK_STREAM表示。
SOCK_STREAM是一种可靠的(TCP)、双向的通信数据流,数据可以准确无误地到达另一台计算机,如果损坏或者丢失,可以重新发送,因此是可靠的(内部有纠错机制)。
SOCK_STREAM的特征:
数据在传输过程中不会消失;
数据是有顺序的;
数据收发不同步,接收方比较灵活;
注:流格式套接字内部有一个缓冲区,通过socket传输的数据将保存到这个缓冲区,接收端的灵活性取决于缓冲区的能力
应用:
HTTP
(2)SOCK_DGRAM
SOCK_DGRAM也叫无连接的套接字,在代码中使用SOCK_DGRAM表示。
SOCK_DGRAM模式下计算机只管传输数据,不作数据校验,如果数据在传输过程中损坏,或者没有到达另一个计算机,没有办法补救,数据错了就是错了,无法重传。
特点:
效率较高
特征:
传输快;
收发是同步的;
每次传输的数据大小受限;
传输的数据可能丢失也可能损毁;
注:SOCK_DGRAM不可靠的(UDP)、不一定按顺序的、具有高传输效率的套接字。
3.SOKC_STREAM和SOCK_DGRAM
路由器:IP寻址、路由算法,数据包的传输路径是根据路由算法(RIP、OSPF)计算出来的。
面向连接的套接字(TCP的特点):
虚电路、路由器的下一跳。
连接的建立和释放会消耗时间;
面向无连接(UDP的特点):
尽力而为;
数据分包;
TCP和UDP总结:
TCP:面向连接、可靠、开销大
应用:FTP、HTTP
UDP:面向无连接、不可靠、传输效率高
应用:DNS、微信
4.OSI七层模型和TCP/IP四层
我们所说的socket编程,是站在传输层的基础上,使用TCP/UDP(传输层协议),但是不能访问网页,因为访问网页所需的HTTP协议位于应用层。
5.TCP/IP协议族
6.IP地址、MAC地址、端口号
IP地址的分类:
四类
1.0.0.0-127.255.255.255
128.0.0.0-191.255.255.255
192.0.0.0-223.255.255.255
224.0.0.0-239.255.255.255
私有IP地址
10.0.0.0-10.255.255.255
172.16.0.0-172.31.255.255
192.168.0.0-192.168.255.255
IP地址:局域网地址
MAC地址:物理地址
端口号:确定处理的网络程序