深入解析:网络通信核心:IP、TCP与UDP详解

一.网络

1.ip地址--就是网络的身份证,用来唯一的标识一台主机

ip=网络+主机号

2.ip本质是32的数值

点分十进制

3.子网掩码:用来区分网络

4.OSI 7层模型

分层

1)7应用层

2)6表示层

3)5会话层

4) 4传输层

5)3网络层

6)2数据链路层

7)1物理层

实际用到的网络层次

1)五层

2)四层

5.总结

1.网络通信

1)物理通络

2)逻辑通路

。网络层次模型

2.IP地址

3.子网掩码

4.网关

5.DNS

二.网络层次与Linux框架

应用层 【用户空间】

----------------------------------------

传输层 【内核空间】

网络层

数据链路层

物理层

1.socket

1)是网络通信的特殊文件

2)也是Linux环境提供的一个编程接口,利用这个接口,可以使用Linux网络作用

2.TCP的特点

1)面向链接(在进行通信之前,必须建立好一条逻辑上的通络)

2)提供可靠传输(四“无”,无丢失,无失序,无差错,无重复)

建立链接:

tcp的三次握手 目的:建立连接

3.UDP的特点(不可靠,无连接,数据报)

不提供可靠传输,在数据发送时,不需要建立连接。

三.函数接口

1.socket

四.网络通信模式

1.c/s:

1)client 客户端

2)server 服务器

2.b/s:

1)browser 浏览器

2)server 服务器

3.p2p:

点对点

peer to peer

4.tcp客户端

函数接口

a.socket

b.connect

int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

功能:

通过socket链接到指定的地址上

参数:

sockfd----socket创建的fd

addr--------标识网络中一个进程对应的地址

返回值:

成功返回0

失败返回-1或者errno

ip 确定一个主机

端口号 用来标识一个网络通信的进程

ip+端口号

端口号:是一个16位的整形数据

0~1023 //1024------知名端口号

1024~50000 //特点的端口号

50000~ //平台临时分配的端口号

c.write

d.read

e.close

tcp服务器

a.socket

b.bind

int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

特性:给sockfd绑定一个地址信息(IP+port)

参数:

sockfd---------要执行的socket

addr------------要绑定的地址信息

addrlen--------地址信息对应的大小

返回值:

成功 0

失败 -1&&errno

c.listen

int listen(int sockfd, int backlog);

功能:将sockfd对应的socket设置位监听套接字

参数:

sockfd------socket的fd

backlog-----等待队列的长度

返回值:

成功 0

失败 -1&&errno

d.accept

int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

功能:

从监听的socket中提取连接请求,达成连接(三次握手)

返回已连接的一个新的socket

参数:

sockfd------监听的socket的fd

addr---------用来存放客户端的地址信息

addrlen----值结果参数

注意:必须要初始化,初始化成addr对应的sockaddr_in类型的大小

e.read

f.write

g.close

posted @ 2025-08-26 14:24  yjbjingcha  阅读(13)  评论(0)    收藏  举报