网络通信核心: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

                                  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值