8·Linux应用编程和网络编程---Linux网络编程 笔记


没写完,后面补,只是笔记


1. Linux网络编程框架

1·1 OSI 7层模型

应用层
网络服务与最终用户的一个接口。
协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP

表示层
数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
格式有,JPEG、ASCll、EBCDIC、加密格式等

会话层
建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
对应主机进程,指本地主机与远程主机正在进行的会话

传输层
定义传输数据的协议端口号,以及流控和差错校验。
协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层

网络层
进行逻辑地址寻址,实现不同网络之间的路径选择。
协议有:ICMP IGMP IP(IPV4 IPV6)

数据链路层
建立逻辑连接、进行硬件地址寻址、差错校验 [3] 等功能。(由底层网络定义协议)
将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。

物理层
建立、维护、断开物理连接。(由底层网络定义协议

1·2 TCP/IP 协议

(1)TCP/IP协议是用的最多的网络协议实现
(2)TCP/IP协议分为4层,对于OSI的7层。了解传输层。

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
.
.
.
TCP/IP协议在一定程度上参考了OSI的体系结构。OSI模型共有七层,从下到上分别是物理层、数据链路层、网络层、运输层(又叫传输层)、会话层、表示层和应用层。但是这显然是有些复杂的,所以在TCP/IP协议中,它们被简化为了四个层次。

(1)应用层、表示层、会话层三个层次提供的服务相差不是很大,所以在TCP/IP协议中,它们被合并为应用层一个层次。

(2)由于运输层(又叫传输层) 和网络层在网络协议中的地位十分重要,所以在TCP/IP协议中它们被作为独立的两个层次。

(3)因为数据链路层和物理层的内容相差不多,所以在TCP/IP协议中它们被归并在网络接口层一个层次里。只有四层体系结构的TCP/IP协议,与有七层体系结构的OSI相比要简单了不少,也正是这样,TCP/IP协议在实际的应用中效率更高,成本更低。

.
.
.

分别介绍TCP/IP协议中的四个层次。

应用层:应用层是TCP/IP协议的第一层,是直接为应用进程提供服务的。
(1)对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议,邮件传输应用使用了SMTP协议、万维网应用使用了HTTP协议、远程登录服务应用使用了有TELNET协议。

(2)应用层还能加密、解密、格式化数据。

(3)应用层可以建立或解除与其他节点的联系,这样可以充分节省网络资源。

运输层:作为TCP/IP协议的第二层,运输层在整个TCP/IP协议中起到了中流砥柱的作用。且在运输层中,TCP和UDP也同样起到了中流砥柱的作用。

网络层:网络层在TCP/IP协议中的位于第三层。在TCP/IP协议中网络层可以进行网络连接的建立和终止以及IP地址的寻找等功能。

网络接口层:在TCP/IP协议中,网络接口层位于第四层。由于网络接口层兼并了物理层和数据链路层所以,网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路。

在这里插入图片描述

1·3 BS 和 CS

(1)CS架构介绍(client server,客户端服务器架构)
|
|
|
\ /

(2)BS架构介绍(broswer server,浏览器服务器架构)

2· TCP协议的学习

2·1 有关TCP理解的重点

(1)TCP协议工作在传输层,对上服务socket接口,对下调用IP层
(应用层对下传输层的API就是socket 套接字)

(2)TCP协议面向连接,通信前必须先3次握手建立连接关系后才能开始通信。

(3)TCP协议提供可靠传输,不怕丢包,乱序等。

2·2 TCP协议是如何保证可靠传输的

(1)TCP协议规定:在传输有效信息前要求通信双方必须先握手,建立连接才能通信

(2)TCP的接收方收到数据包后需要发送一个ack应答信号给发送方,若发送方没有收到
ack应答信号会丢包重传。

(3)TCP的有效数据内容会附带校验,防止内容在传递过程中损坏

(4)TCP会根据网络带宽来自动调节适配速率(滑动窗口技术)

(5)发送方会给各分割报文编号,接收方会校验编号,一旦顺序出错即会重传。

2·3 TCP协议的三次握手

(1)建立连接时需要三次握手
(2)建立连接的条件:服务器listen时客户端主动发起connect

2·4 TCP协议的四次挥手

(1)关闭连接需要4次挥手
(2)服务器或者客户端都可以主动发起关闭

注意:这些握手挥手协议已经封装在tcp协议内部,socket编程接口平时不用管。

2·5 基于TCP通信的服务模式

(1)具有公网IP地址的服务器(或者使用动态IP地址映射技术)

(2)服务器端socket,bind,listen后处于监听状态

(3)客户端socket后直接connect去发起连接

(4)服务器收到并同意客户端接入后会建立TCP连接,然后双方开始收发数据,收发时是双向的,而且双方均可发起

(5)双方任一方都可以发起关闭连接

3· socket编程接口介绍

3·1 建立连接

(1)socket
(2)bind
(3)listen
(4)connect

3·2 发送于接收

(1)send 与 write
(2)recv 和 read

3·3 辅助性函数

(1)inet_aton, inet_addr , inet_ntoa ----》只是支持IPv4
(2)inet_ntop , inet_pton ----》IPv4,IPv6

4· IP地址格式转换实验

(1)inet_addr , inet_ntoa , inet_atoh
(2)inet_pton , inet_ntop

#include<stdio.h>

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>


#define IPADDR "192.168.1.123"

int main(void)
{

	printf("IPADDR = 0x%x.\n",inet_addr(IPADDR));


}

结果:
IPADDR = 0x7b01a8c0.

这个inet_addr函数就是将字符串形式的IP地址转换成 16进制的IP地址。
转化注意大小端的问题

4· socket编程实战

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值