16_TCP C/S模型引入
16_TCP C/S模型引入
1.网络基础概念
网卡:在网络上收发数据
1.什么是网络?
多个主机连接起来构成网络
2.什么是互联网?
把多个网络连接起来就构成互联网
3.IP地址 ipv4, ipv6
32位,每8个位一个字节,一个字节范围0-255
MAC物理地址 48位
4.端口号 port 短整型short
在一台主机上标识一个进程/应用程序,相当于一个代号
知名端口:1024以内 root
保留端口:1024-4096(5000)
临时端口:5000以上,我们一般使用临时端口
2.网络分层
(OSI)应用层 表示层 会话层 传输层 网络层 数据链路层 物理层
(TCP/IP)应用层 传输层 网络层 数据链路层
数据链路层:相邻的两个主机间数据的传输
网络层:不相邻的两个主机间数据的传输 ip协议
传输层:给应用层提供进程间通讯的能力,两台不同主机上的两个进程间通讯 tcp udp协议
应用层: http
3.套接字 socket
软件层面,进行数据的收发
ip+port ip地址+端口 组成一个套接字的地址
通用套接字结构struct sockaddr
(ipv4专用的是struct sockaddr_in
)
举个栗子:
Eg:服务器端客户端通讯代码很重要!面试写!
先运行服务器端,再运行客户端,服务器端等待客户端来链接。
服务器端 ser.c
行号 | 注释 |
---|---|
13 | 最后一个参数是标志位,几乎恒为零 |
16 | 服务器端端口号saddr,客户端端口号caddr |
19 | htons() 短整型主机字节序列转成网络字节序列(统一成大端存储)(设置端口号的时候要用) 要使用5000以上端口,临时端口 |
20 | 终端ifconfig查找,前提要联网 |
22 | 注意第二个参数换成通用套接字结构 |
31 | 第二个参数表示谁来跟我建立连接(客户端端口号) |
40 | c表示刚才建立连接的端口号,数据存放在buff中,标志位0 |
44 | 关闭c,可以使c进行复用 |
客户端 sli.c
行号 | 注释 |
---|---|
19 | 表示我们即将去链接的端口号为6000 |