'과제' 카테고리의 다른 글
20141019-쏘우웨이브 입사지원서 (0) | 2014.10.19 |
---|---|
20140407 - 문자열 대치 함수 (0) | 2014.04.08 |
20140407 - 달팽이 순서도 (0) | 2014.04.08 |
20141019-쏘우웨이브 입사지원서 (0) | 2014.10.19 |
---|---|
20140407 - 문자열 대치 함수 (0) | 2014.04.08 |
20140407 - 달팽이 순서도 (0) | 2014.04.08 |
------- TCP/IP 4계층과 OSI 7계층
- TCP/IP 4계층은 인터넷 모델이라고도 한다.
레벨 |
계층 |
기능 |
4계층 Application |
응용 계층 프로토콜 : HTTP, FTP, Telnet, DNS, SMTP |
OSI 7계층의 5, 6, 7계층에 해당한다. TCP/IP 기반의 응용프로그램을 구분할 때 사용한다. |
3계층 Transport |
전송 계층 프로토콜 : TCP, UDP |
OSI 7계층의 4계층에 해당한다. 통신 노드 간의 연결을 제어하고, 자료의 송수신을 담당한다. |
2계층 Internet |
인터넷 계층 프로토콜 : IP, ARP, RARP, ICMP, OSPF |
OSI 7계층의 3계층에 해당한다. 통신 노드 간의 IP 패킷을 전송하는 기능 및 라우팅 기능을 담당한다. |
1계층 Network Interface |
네트워크 인터페이스 계층 프로토콜 : Ehternet, Token Ring, PPP |
OSI 7계층의 1, 2 계층에 해당한다. CSMA/CD, MAC, LAN, X.25, 패킷망, 위성 통신, 다이얼 업 모뎀 등 전송에 사용된다. |
Ethernet과 IP, TCP, UDP Header (0) | 2014.10.22 |
---|---|
20140624 - (0) | 2014.06.24 |
20140623 (0) | 2014.06.23 |
20140620 - 시그널의 종류, 시그널 처리하기, 다수의 클라이언트와의 네트워킹 (0) | 2014.06.20 |
20140619 - 프로세스, 함수 포인터 (0) | 2014.06.19 |
------- Ethernet과 IP, TCP, UDP Header
------- Ethernet Frame
Ethernet frame은 다음과 같이 몇몇 타입이 있다.
- Ethernet II
- IEEE 802.3
- IEEE 802.2 Logical Link Control (LLC) frame
- IEEE 802.2 Subnetwork Access Protocol (SNAP) frame
--- Ethernet II
DEC, Intel, and Xerox에 의해 만들어졌으며,
DIX Ethernet 이라고도 불린다
첫 번째 필드엔 목적 MAC주소,
두 번재 필드엔 보낸 MAC주소,
세 번째 필드엔 Ether type이라고 Ethernet 프로토콜 타입,
네 번째 필드엔 정보,
다섯 번째 필드엔 CRC(cyclic redundancy check) 또는 FCS(Frame Check Sequence)라고
오류 검출에 쓰인다.
(출처 : http://en.wikipedia.org/wiki/Ethernet_frame)
--- IEEE 802.3
Novell 사에서 IPX protocol용으로 만들어졌다.
Ethernet II와 흡사한 구조로 세 번재 필드인 EtherType 대신 Length 이다.
--- IEEE 802.2 Logical Link Control (LLC) frame
OSI 계층 구조에서만 사용하는 Frame으로 거의 사용하지 않는다.
토큰링이 이 구조를 사용한다.
--- IEEE 802.2 Subnetwork Access Protocol (SNAP) frame
OSI 계층 구조에서 사용한다. TCP/IP가 주류므로 OSI는 잘 사용하지 않는다.
AppleTalk이 이 구조를 사용한다.
--- IEEE 802.1Q tag
VLAN (virtual local area network) 서비스에 대한 규약으로 Ethernet frame 들에 포함하고 있는데,
데이타 링크 계층(TCP/IP) or 네트워킹 계층(OSI)인 라우터나 스위치 등에서 운영되는 것으로,
브로드캐스트 필터링, 보안, 주소 축약, 트래픽 흐름 관리, QoS 등에 사용된다고 한다.
VLAN은 Ethernet frame에 Source Address 와 EtherType 또는 Length fields 사이에 위치하고 있거나,
EtherType 또는 Length fields 에 위치하고 있다.
처음 2 byte (2 octets)에는 Tag Protocol Identifier (TPID) 값이 0x8100으로 되어 있다.
------- Ethernet Frame 구조체
linux 환경
/usr/include/linux/if_ether.h
/usr/include/net/ethernet.h
위치에서 확인할 수 있다
|
|
--- 데이터 타입은
/usr/include/i386-linux-gnu/sys/types.h 에 있다.
--- ETH_ALEN 값은
/usr/include/linux/if_ether.h 에 있다.
--- type의 종류는
/usr/include/net/ethernet.h 에 있다.
더 많은 type은 /usr/include/linux/if_ether.h를 참고...
------- IP Header 구조체
http://en.wikipedia.org/wiki/IPv4 참고
/usr/include/netinet/in.h 에 프로토콜에 타입
/usr/include/netinet/ip.h 에 IP구조체가 정의 되어 있다
struct iphdr
{
#if __BYTE_ORDER == __LITTLE_ENDIAN
unsigned int ihl:4; //헤더 길이
unsigned int version:4; //IP version 4
#elif __BYTE_ORDER == __BIG_ENDIAN
unsigned int version:4; //IP version 4
unsigned int ihl:4; //헤더 길이
#else
# error "Please fix <bits/endian.h>"
#endif
u_int8_t tos;
u_int16_t tot_len;
u_int16_t id;
u_int16_t frag_off;
u_int8_t ttl;
u_int8_t protocol;
u_int16_t check;
u_int32_t saddr;
u_int32_t daddr;
/* The options start here. */
};
------- TCP Header 구조체
/usr/include/netinet/tcp.h
/usr/include/linux/tcp.h
에 위치해 있다.
struct tcphdr
{
u_int16_t source; //source port
u_int16_t dest; //destination port
u_int32_t seq; //sequence number
u_int32_t ack_seq; //acknowledgement number
#if __BYTE_ORDER == __LITTLE_ENDIAN
u_int16_t res1:4; //(unused)
u_int16_t doff::4; //data offset
u_int16_t fin:1;
u_int16_t syn:1;
u_int16_t rst:1;
u_int16_t psh:1;
u_int16_t ack:1;
u_int16_t urg:1;
u_int16_t res2:2;
#elif __BYTE_ORDER == __BIG_ENDIAN
u_int16_t doff::4; //data offset
u_int16_t res1:4; //(unused)
u_int16_t res2:2; //(unused)
u_int16_t urg:1;
u_int16_t ack:1;
u_int16_t psh:1;
u_int16_t rst:1;
u_int16_t syn:1;
u_int16_t fin:1;
#else
#error "Adust your <bits/endian.h> defines"
#endif
u_int16_t window; //window
u_int16_t check; //checksum
u_int16_t urg_ptr; //urgent pointer
};
TCP/IP 4계층과 OSI 7계층 (0) | 2014.10.22 |
---|---|
20140624 - (0) | 2014.06.24 |
20140623 (0) | 2014.06.23 |
20140620 - 시그널의 종류, 시그널 처리하기, 다수의 클라이언트와의 네트워킹 (0) | 2014.06.20 |
20140619 - 프로세스, 함수 포인터 (0) | 2014.06.19 |
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.
보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.