레이블이 TCP/IP인 게시물을 표시합니다. 모든 게시물 표시
레이블이 TCP/IP인 게시물을 표시합니다. 모든 게시물 표시

2008년 6월 28일 토요일

CCNA/CCNP 자료

2007년 12월 20일 목요일

Why 3-way Handshake is needed for TCP?

A Connection-Oriented Protocol, such as TCP, exchanges Control Information(called a Handshake) with the remote computer to verify that it is ready to receive data before sending it. When the handshaking is successful, the computers are said to have established a connection.
In contrast, a Connectionless Protocol, such as IP, doesn't exchange Control Information to establish an end-to-end connection before transmitting data.

TCP Connection Establishing: 3-Way Handshake

TCP Connection이 성립되기 위해서는 먼저 Server가 Connection을 수락할 준비상태에 들어가 있어야 하는데, 이를 'Passive open'이라 한다. Client는 Server로의 Connection Establishment를 요구하며, 이것은 'Active open'이다.

사용자 삽입 이미지

1. SYN Segment(Client의 Synchronization Information 전송): Client는 Source Port에 자신을 나타내는 Port Number를 넣고, Destination Port에는 Server를 가리키는 Port Number를 넣는다.(그림에서 Destination Port가 23이므로 Telnet Server로 Connection Request하는 경우이다). Sequence Number에는 Client의 ISN(Initialization Sequence Number)를 넣고, Acknowledgment Number는 0을 넣고, Flag는 SYN bit를 1로 설정하여 전송한다.

2. SYN+ACK Segment(Server의 Synchronization Information 전송 + SYN Segment 수신 확인): Server는 Source Port에 자신을 나타내는 Port Number를 넣고, Destination Port에는 Sender를 나타내는 Port Number를 넣는다.(Telnet Server를 예로 들고 있으므로 Source Port에는 23번이 들어간다, Sender의 Port Number는 첫번째 단계에서 수신한 SYN Segment에서 알 수 있다. 결과적으로 보면 Sender가 보낸 SYN Segment에서 Source Port와 Destination Port가 서로 바뀌어 들어간 것과 같다). Sequence Number에는 Server의 ISN를 넣고, Acknowledgment Number에는 “Client의 ISN + 1”의 값을 넣고, Flag는 SYN 와 ACK bit를 모두 1로 설정하여 전송한다.

3. ACK Segment(SYN Segment 수신 확인): Client는 첫번째 단계와 동일하게 Source Port와 Destination Port를 설정하고, Acknowledgment Number에는 “Server의 ISN + 1”의 값을 넣고, Flag는 ACK bit를 1로 설정하여 전송한다.

TCP is a connection oriented protocol. It has to establish a connection between two parties (host and server) before it can start transmitting data (as opposed to for example, IP). The 3-way handshake verifies that both ends are connected properly.


[Related Articles]
[DOC] AMAN2002를 활용한 TCP 연결 설정과 연결 종료 분석 by NetMan
2007/11/08 - [Network] - [scrap] TCP/IP Sliding Window
2007/10/23 - [Network/Network Story] - Network Selfstudy
2007/10/21 - [Network/cisco.com] - [cisco.com] Understanding TCP/IP
2007/09/28 - [Network/Link for Network] - [Link] TCP/IP의 이해(IP Address & Subnet)

2007년 11월 29일 목요일

Network Selfstudy


후니의 네트워크 이야기 컬럼의 내용을 기반으로 내용을 보충해 넣은 자습용 문서이다.

아직은 기초적인 내용들만이 담겨져 있지만 계속 추가해 나갈 예정이다.
LAN, MAN, WAN, OSI Reference Model, TCP/IP Model, Ethernet,
Network Cable, Hub, Bridge, Switch, Router
등에 관한 내용들이 담겨있다.



ver.0.1.1 Page 5 오타수정.
ver.0.1.2 Page 8 Graphic수정.



secure.pe.kr의 강의실에 공개되어 있는 강좌들 중
TCP/IP Protocol Suite와 IP Address에 관한 부분을 정리한 자습용 문서이다.
위의 문서에 비해서는 추가된 내용이 적다. 그만큼 내용이 충실한 강좌였기때문이기도 하다.





2007년 11월 8일 목요일

[scrap] TCP/IP Sliding Window


[Source]
Secure.pe.kr 강의실

TCP/IP Sliding Window

TCP/IP Protocol Suite중의 하나인 TCP는 TCP Host간에 효율적인 데이터 전송을 위하여 "window"라고 부르는 Buffer를 이용한다. window는 TCP/IP통신을 원하는 컴퓨터(일반적으로 Host라고 부른다)가 송신, 혹은 수신할 수 있는 size를 가리켜 준다.

이러한 window라는 것을 이용하여 호스트간에 전송을 하고 받는 과정 중에, 네트워크의 트래픽 혹은 호스트의 불안한 요소등 여러 가지 원인에 의하여 전송되는 데이터의 손실이 생길 수 있는 경우가 발생하게 된다.
반대로 안정적인 네트워크 상황 하에서 보다 많은 데이터를 전송할 수 있음에도 TCP가 제공하는 가장 큰 특징 중의 하나인 "확실한 전송"이라는 책임 때문에 오히려 비효율적인 전송을 하게 되는 경우도 있게 될 것이다.
이러한 요소들을 모두 고려하여 가장 효율적인 데이터 전송방법으로서 "Sliding Window" 라는 기법을 사용하여 호스트 간의 통신에서 최적의 성능을 제공할 수 있게 된다.

그러면, 실제로 호스트간의 TCP/IP통신 중에서 "TCP Sliding window"라는 기법이 무엇인지, 어떻게 동작을 하는지 차근차근 접근해 보도록 하자.

[그림 1]
TCP/IP를 사용하는 모든 호스트들은 각각 2개의 window를 가지고 있다.
하나는 보내기 위한 window, 또 다른 하나는 받기 위한 window이다.

[그림 2]
호스트들은 실제 데이터를 보내기 전에 먼저 "TCP 3-way handshaking"을 통하여 수신컴퓨터의 receive window size에 자신의 send window size를 맞추게 된다.
상대방이 받을 수 있는 크기에 맞추어 전송을 하겠다는 것이다.

[그림 2]의 "A"컴퓨터가 "B"컴퓨터에게 10kbyte size의 데이터를 전송하려 한다고 가정을 해 보자.
또, 이 컴퓨터의 "window size"는 8k이고, "TCP segment size"는 1k라고 가정을 한다.
사실 이것은 우리가 가장 많이 사용하는 Ethernet환경에 최적화된 size이기 때문에 NT는 기본적으로 위와 같은 windows와 segment size를 이용한다.
"TCP segment size"는 Application이 만든 데이터를 TCP가 받아서 IP에게 전달해서 통신을 하려고 할 때, IP에게 전달해 주는 데이터 패킷의 크기이다. 결과적으로는 실제 데이터를 TCP가 보다 작은 크기로 나누게 되는데, 이 때 나누게 되는 크기를 가리켜 "TCP segment size"라고 부른다.
예제의 경우와 같을 때, "A"컴퓨터는 "B"컴퓨터에게 데이터를 전송하기 위해서
먼저 10k크기의 데이터를 1k크기로 나누게 된다. 당연히 10개의 패킷으로 데이터가 나뉘게 될 것이다.
TCP는 1k로 나눈 데이터마다 순서를 붙이게 된다.
1번부터 10번까지 번호를 붙이고, 1번부터 데이터 전송을 시작하게 된다.

TCP의 특징은 "신뢰성있는 전송"을 보장한다는 데 있다.
1번을 보내고, "A"컴퓨터는 "B"컴퓨터로부터 잘 받았다는 확인 메시지(Acknowledgement)를 받을 때까지 기다리게 된다.
마침내 Acknowledgement 메시지가 오면 "A"컴퓨터는 그 다음 순서인 2번 데이터를 전송한다.
생각하기에는 당연한 이야기고 그런대로 쓸 만한 방법이라고 생각할 수도 있겠지만 지극히 비효율적인 방법이다. "A"컴퓨터는 1번 데이터를 보내고 나서도 충분히 다음 데이터를 보낼 여유가 있지만, 응답을 받을 때까지 기다리고만 있어야 한다는 것이다.
만일 회선상의 문제가 있어서 ACK신호가 더욱 지연된다면 그 결과는 당연히 영 아닌 상태의 네트워크 통신을 지켜 봐야만 할 것이다.
이러한 문제점을 해결하기 위해서 TCP는 데이터를 낱개단위로만 처리하지는 않는다는 것이며, 그때 한꺼번에 전송하는 데이터의 크기를 바로 "window Size"라고 부르는 것이다.

[그림 3]
[그림 3]처럼 호스트는 자신이 보내야할 전체 데이터 중에서 사용가능한 window size만큼 데이터를 전송하기 시작한다.
위의 예제에서 window size는 8K이다.
1번부터 8번까지 순차적으로 계속해서 데이터를 내 보내게 되는 것이다.
그리고 나서 이 호스트는 상대방의 응답을 기다리게 된다.
단순하게 생각해도 일단은 하나씩 보내고 응답을 기다리는 것보다는 효율적인 방법일 것이다.
성공적으로 통신이 되어서 상대방으로부터 응답이 온다면 그때 "A"호스트는 나머지 남은 9번, 10번의 데이터를 전송한다.
이것이 "TCP Sliding Window"라는 기법이다.
window size만큼 데이터를 전송하고, 상대방으로부터 ACK신호가 올 때까지 기다렸다가 ACK신호가 오면, window를 이동(Slide)시켜 다음 순서의 TCP데이터를 전송하는 방식을 말한다.

하지만, 역시 이것만으로는 뭔가 비효율적인 면이 여전히 남아있다.
1번부터 8번까지 데이터를 전송하고 상대방으로부터 1번부터 시작하여 자신이 보낸 데이터의 마지막인 8번까지의 데이터에 대한 ACK신호가 올 때까지 기다려야 한다면 어리석은 일이 아닐 수 없다.
우리가 생각하는 정도는 이미 TCP/IP를 개발한 개발자들도 충분히 고려했던 부분이었기에 그것에 대한 생각도 물론 했을 것이다. 그렇기 때문에 보다 효율적인 방법을 채택했다.

[그림 4]
일단 보내는 쪽의 TCP는 window size만큼 한꺼번에 데이터를 전송하고, 받는 쪽에서의 ACK신호가 오면 오는대로 바로바로 window를 Sliding시키는 방법이 그것이다.
다시 말하면 굳이 자신이 발송한 마지막 데이터에 대한 ACK신호가 오지 않더라도 일단 그 전의 데이터에 대한 ACK가 오게 되면 그만큼은 여분의 window size가 생긴 것이기 때문에 추가로 더 전송할 여유가 생겼다는 의미이다.
[그림 4]에서 보면 window가 이동한 그림을 볼 수 있다.
예제의 경우는 받는 쪽에서 2번까지의 데이터를 잘 받았다는 ACK신호를 발송해 주게 되면 그때 "A"컴퓨터는 1,2번 데이터는 제대로 전송해야 할 책임을 완수했기 때문에 window를 이동시켜서 그 다음 순서의 데이터인 9번과 10번을 전송할 수가 있게 되었다.
추가로, 받는 측인 "B"컴퓨터는 패킷 하나마다 계속해서 ACK신호를 전송한다는 것은 역시 그것도 하나의 트래픽을 발생시키는 것이기에 약속을 해 두었다.
적어도 2개 이상의 연속된 패킷이 들어왔을 때 ACK신호를 전송하도록 한 것이 그것이다.

[그림 5]
[그림 5]에서처럼 1번과 3번 패킷이 도착을 했지만, 중간에 이빨이 빠진 채로 2번이 아직 도착을 하지 않았다라고 가정을 해 보자.
그렇게 되면, 받는 측의 TCP는 2개이상의 연속된 패킷이 도착하면 전송을 하자는 약속을 해 두었기에 마냥 기다려야 할 것이다.

그래서 만일의 경우를 대비하여 한가지 해결책을 강구해 두었다. 받는 측의 컴퓨터는 패킷이 도착하였을 때, "Delay Acknowledgement Timer"라고 부르는 Timer를 설치하게 된다. 이 Timer의 시간이 만료될 때까지 2번 패킷이 도착하지 않는다면, 받은 1번 패킷에 대한 ACK신호만이라도 전송을 해 주는 것이 보다 효율적이기 때문이다.

[그림 6]에서 보면, 받는 측의 TCP는 1번 패킷에 설치해 둔 Timer가 만료되었고, ACK신호를 전송하고 있다.
[그림 6]
송신컴퓨터는 이렇게 수신컴퓨터의 ACK신호를 받고, window를 sliding시켜서 다음 신호를 전송하는 방식을 쓰고 있지만, 또 한가지 문제가 여전히 남아 있다.
만일 무슨 이유에선지 ACK신호가 전혀 오지 않는 상황이라면 어떻게 해야 할까?
이러한 문제를 해결하기 위해서 송신컴퓨터의 TCP는 자신이 보낼 수 있는 window Size만큼 데이터를 전송하고 자신이 보낸 데이터에 대해서 각 Segment마다 "Retransmission Timer"라고 불리우는 timer를 설치 해 둔다. 만일 이 timer의 시간이 만료될 때까지 ACK신호가 도착하지 않으면 재전송을 하기 위한 배려이다.

[그림 7]  
결국, TCP는 window size를 이용해서 한꺼번에 일정량의 데이터를 전송하며, 보다 효율을 기하기 위해서 이러한 window를 Sliding시키는 방식을 이용하여 계속적인 데이터 전송을 할 수 있도록 하고 있다.
여기에서 생길 수 있는 문제점들을 "Delay Acknowledgement Timer"와 "Retransmission Timer"를 이용해서 대비책을 마련해 두고 있는 것이다.

[Related Articles]
2007/09/28 - [Network/Link for Network] - [Link] TCP/IP의 이해(IP Address & Subnet)

위키백과 - 슬라이딩 윈도우

Wikipedia - Sliding Window Protocol

2007년 10월 22일 월요일

[cisco.com] Understanding TCP/IP


출처: www.cisco.com
Download : Understanding TCP/IPUnderstanding TCP/IP

Understanding TCP/IP

Introduction

To fully understand the architecture of Cisco Centri Firewall, you need to understand the TCP/IP architecture on which the Internet is based. This appendix discusses the TCP/IP architecture and provides a basic reference model that can help you understand how Cisco Centri Firewall operates. It explains TCP/IP terminology and describes the fundamental concepts underlying the TCP/IP protocol suite. We begin by providing a common frame of reference to use as a basis for the rest of the discussion contained in this appendix on TCP/IP and Cisco Centri Firewall.

What is an Architectural Model?

An architectural model provides a common frame of reference for discussing Internet communications. It is used not only to explain communication protocols but to develop them as well. It separates the functions performed by communication protocols into manageable layers stacked on top of each other. Each layer in the stack performs a specific function in the process of communicating over a network.

Generally, TCP/IP is described using three to five functional layers. To describe TCP/IP based firewalls more precisely, we have chosen the common DoD reference model, which is also known as the Internet reference model. Figure A-1 illustrates the Internet reference model.

Figure A-1: The DoD Protocol Model

This model is based on the three layers defined for the DoD Protocol Model in the DDN Protocol Handbook, Volume 1. These three layers are as follows:

  • network access layer

  • host-to-host transport layer

  • application layer

An additional layer, the internetwork layer, has been added to this model. The internetwork layer is commonly used to describe TCP/IP. The following section explains how network protocols work, and it defines the basic terminology that we use to discuss TCP/IP and Cisco Centri Firewall.

Another standard architectural model that is often used to describe a network protocol stack is the OSI reference model. This model consists of a seven layer protocol stack (see Figure A-2).

Figure A-2: The OSI Protocol Reference Model

No additional information or explanation for this reference model will be included within this guide because very few firewalls implement this model. For additional information on this reference model consult Chapman, D. B., and Elizabeth D. Zurichy, Building Internet Firewalls, Sebastopol:O'Reilly & Associates, Inc., September 1995. (See Appendix B.) or Heywood, D., Networking with Microsoft TCP/IP, Indianapolis: New Riders Publishing, 1996. (See Chapter 1.)

Understanding Architectural Models and Protocols

In an architectural model, a layer does not define a single protocol—it defines a data communication function that may be performed by any number of protocols. Because each layer defines a function, it can contain multiple protocols, each of which provides a service suitable to the function of that layer.

Every protocol communicates with its peer. A peer is an implementation of the same protocol in the equivalent layer on a remote computer. Peer-level communications are standardized to ensure that successful communications take place. Theoretically, each protocol is only concerned with communicating to its peer—it does not care about the layers above or below it.

A dependency, however, exists between the layers. Because every layer is involved in sending data from a local application to an equivalent remote application, the layers must agree on how to pass data between themselves on a single computer. The upper layers rely on the lower layers to transfer the data across the underlying network.

How a Protocol Stack Works

As the reference model indicates, protocols (which compose the various layers) are like a pile of building blocks stacked one upon another. Because of this structure, groups of related protocols are often called stacksprotocol stacks. or

Data is passed down the stack from one layer to the next, until it is transmitted over the network by the network access layer protocols. The four layers in this reference model are crafted to distinguish between the different ways that the data is handled as it passes down the protocol stack from the application layer to the underlying physical network.

At the remote end, the data is passed up the stack to the receiving application. The individual layers do not need to know how the layers above or below them function; they only need to know how to pass data to them.

Each layer in the stack adds control information (such as destination address, routing controls, and checksum) to ensure proper delivery. This control information is called a header and/or a trailer because it is placed in front of or behind the data to be transmitted. Each layer treats all of the information that it receives from the layer above it as data, and it places its own header and/or trailer around that information.

These wrapped messages are then passed into the layer below along with additional control information, some of which may be forwarded or derived from the higher layer. By the time a message exits the system on a physical link (such as a wire), the original message is enveloped in multiple, nested wrappers—one for each layer of protocol through which the data passed. When a protocol uses headers or trailers to package the data from another protocol, the process is called encapsulation. This process is illustrated in Figure A-3.

Figure A-3: Encapsulation of Data for Network Delivery

When data is received, the opposite happens. Each layer strips off its header and/or trailer before passing the data up to the layer above. As information flows back up the stack, information received from a lower layer is interpreted as both a header/trailer and data. The process of removing headers and trailers from data is called decapsulation. This mechanism enables each layer in the transmitting computer to communicate with its corresponding layer in the receiving computer. Each layer in the transmitting computer communicates with its peer layer in the receiving computer via a process called peer-to-peer communication.

Each layer has specific responsibilities and specific rules for carrying out those responsibilities, and it knows nothing about the procedures that the other layers follow. A layer carries out its tasks and delivers the message to the next layer in the protocol stack. An address mechanism is the common element that allows data to be routed through the various layers until it reaches its destination.

Each layer also has its own independent data structures. Conceptually, a layer is unaware of the data structures used by the layers above and below it. In reality, the data structures of a layer are designed to be compatible with the structures used by the surrounding layers for the sake of more efficient data transmission. Still, each layer has its own data structures and its own terminology to describe those structures.

The following section describes the Internet reference model in more detail. We will use this reference model throughout this guide to describe the structure and function of the TCP/IP protocol suite and Cisco Centri Firewall.

Understanding the Internet Reference Model

As mentioned earlier, the Internet reference model contains four layers: the network access layer, the internetwork layer, the host-to-host transport layer, and the application layer.

In the following sections, we describe the function of each layer in more detail, starting with the network access layer and working our way up to the application layer.

Network Access Layer

The network access layer is the lowest layer in the Internet reference model. This layer contains the protocols that the computer uses to deliver data to the other computers and devices that are attached to the network. The protocols at this layer perform three distinct functions:

  • They define how to use the network to transmit a frame, which is the data unit passed across the physical connection.

  • They exchange data between the computer and the physical network.

  • They deliver data between two devices on the same network. To deliver data on the local network, the network access layer protocols use the physical addresses of the nodes on the network. A physical address is stored in the network adapter card of a computer or other device, and it is a value that is "hardcoded" into the adapter card by the manufacturer.

Unlike higher level protocols, the network access layer protocols must understand the details of the underlying physical network, such as the packet structure, maximum frame size, and the physical address scheme that is used. Understanding the details and constraints of the physical network ensures that these protocols can format the data correctly so that it can be transmitted across the network.

Internetwork Layer

In the Internet reference model, the layer above the network access layer is called the internetwork layer. This layer is responsible for routing messages through internetworks. Two types of devices are responsible for routing messages between networks. The first device is called a gateway, which is a computer that has two network adapter cards. This computer accepts network packets from one network on one network card and routes those packets to a different network via the second network adapter card. The second device is a router, which is a dedicated hardware device that passes packets from one network to a different network. These two terms are often used interchangeably, but distinct differences exist in their ability to route packets and their roles within Cisco Centri Firewall.

The internetwork layer protocols provide a datagram network service. Datagrams are packets of information that comprise a header, data, and a trailer. The header contains information, such as the destination address, that the network needs to route the datagram. A header can also contain other information, such as the source address and security labels. Trailers typically contain a checksum value, which is used to ensure that the data is not modified in transit.

The communicating entities—which can be computers, operating systems, programs, processes, or people—that use the datagram services must specify the destination address (using control information) and the data for each message to be transmitted. The internetwork layer protocols package the message in a datagram and send it off.

A datagram service does not support any concept of a session or connection. Once a message is sent or received, the service retains no memory of the entity with which it was communicating. If such a memory is needed, the protocols in the host-to-host transport layer maintain it. The abilities to retransmit data and check it for errors are minimal or nonexistent in the datagram services. If the receiving datagram service detects a transmission error during transmission using the checksum value of the datagram, it simply ignores (or drops) the datagram without notifying the receiving higher-layer entity.

Host-to-Host Transport Layer

The protocol layer just above the internetwork layer is the host-to-host transport layer. It is responsible for providing end-to-end data integrity and provides a highly reliable communication service for entities that want to carry out an extended two-way conversation.

In addition to the usual transmit and receive functions, the host-to-host transport layer uses open and closestream of characters, and it returns information to the recipient as a stream. commands to initiate and terminate the connection. This layer accepts information to be transmitted as a

The service employs the concept of a connection (or virtual circuit). A connection is the state of the host-to-host transport layer between the time that an open command is accepted by the receiving computer and the time that the close command is issued by either computer.

Application Layer

The top layer in the Internet reference model is the application layer. This layer provides functions for users or their programs, and it is highly specific to the application being performed. It provides the services that user applications use to communicate over the network, and it is the layer in which user-access network processes reside. These processes include all of those that users interact with directly, as well as other processes of which the users are not aware.

This layer includes all applications protocols that use the host-to-host transport protocols to deliver data. Other functions that process user data, such as data encryption and decryption and compression and decompression, can also reside at the application layer.

The application layer also manages the sessions (connections) between cooperating applications. In the TCP/IP protocol hierarchy, sessions are not identifiable as a separate layer, and these functions are performed by the host-to-host transport layer. Instead of using the term "session," TCP/IP uses the terms "socket" and "port" to describe the path (or virtual circuit) over which cooperating applications communicate. However, in describing Cisco Centri Firewall, we do distinguish between sessions and ports. A session is a connection over a TCP or UDP port that is made between two computers, either one of which is protected by Cisco Centri Firewall.

Most of the application protocols in this layer provide user services, and new user services are added often. For cooperating applications to be able to exchange data, they must agree about how data is represented. The application layer is responsible for standardizing the presentation of data.


In the following section, we provide a history of TCP/IP and then define the TCP/IP protocol suite using the Internet reference model.

What is TCP/IP?

The name TCP/IP refers to a suite of data communication protocols. The name is misleading because TCP and IP are only two of dozens of protocols that compose the suite. Its name comes from two of the more important protocols in the suite: the Transmission Control Protocol (TCP) and the Internet Protocol (IP).

TCP/IP originated out of the investigative research into networking protocols that the Department of Defense (DoD) initiated in 1969. In 1968, the DoD Advanced Research Projects Agency (ARPA) began researching the network technology that is now called packet switching.

The original focus of this research was to facilitate communication among the DoD community. However, the network that was initially constructed as a result of this research, then called ARPANET, gradually became known as the Internet. The TCP/IP protocols played an important role in the development of the Internet. In the early 1980s, the TCP/IP protocols were developed. In 1983, they became standard protocols for ARPANET.

Because of the history of the TCP/IP protocol suite, it is often referred to as the DoD protocol suite or the Internet protocol suite.

How TCP/IP Works

In this section, we describe some of the protocols that compose TCP/IP using the Internet reference model. We also define the function of each protocol and define terms that are specific to TCP/IP.

Network Access Layer

The design of TCP/IP hides the function of this layer from users—it is concerned with getting data across a specific type of physical network (such as Ethernet, Token Ring, etc.). This design reduces the need to rewrite higher levels of a TCP/IP stack when new physical network technologies are introduced (such as ATM and Frame Relay).

The functions performed at this level include encapsulating the IP datagrams into frames that are transmitted by the network. It also maps the IP addresses to the physical addresses used by the network. One of the strengths of TCP/IP is its addressing scheme, which uniquely identifies every computer on the network. This IP address must be converted into whatever address is appropriate for the physical network over which the datagram is transmitted.

Data to be transmitted is received from the internetwork layer. The network access layer is responsible for routing and must add its routing information to the data. The network access layer information is added in the form of a header, which is appended to the beginning of the data.

In Windows NT, the protocols in this layer appear as NDIS drivers and related programs. The modules that are identified with network device names usually encapsulate and deliver the data to the network, while separate programs perform related functions such as address mapping.

Internetwork Layer

The best known TCP/IP protocol at the internetwork layer is the Internet Protocol (IP), which provides the basic packet delivery service for all TCP/IP networks. In addition to the physical node addresses used at the network access layer, the IP protocol implements a system of logical host addresses called IP addresses. The IP addresses are used by the internetwork and higher layers to identify devices and to perform internetwork routing. The Address Resolution Protocol (ARP) enables IP to identify the physical address that matches a given IP address.

IP is used by all protocols in the layers above and below it to deliver data, which means all TCP/IP data flows through IP when it is sent and received, regardless of its final destination.

Internet Protocol

IP is a connectionless protocol, which means that IP does not exchange control information (called a handshake) to establish an end-to-end connection before transmitting data. In contrast, a connection-oriented protocol exchanges control information with the remote computer to verify that it is ready to receive data before sending it. When the handshaking is successful, the computers are said to have established a connection. IP relies on protocols in other layers to establish the connection if connection-oriented services are required.

IP also relies on protocols in another layer to provide error detection and error recovery. Because it contains no error detection or recovery code, IP is sometimes called an unreliable protocol.

The functions performed at this layer are as follows:

  Each type of network has a maximum transmission unit (MTU), which is the largest packet it can transfer. If the datagram received from one network is longer than the other network's MTU, it is necessary to divide the datagram into smaller fragments for transmission. This division process is called fragmentation.

Internet Control Message Protocol

The Internet Control Message Protocol (ICMP) is part of the internetwork layer and uses the IP datagram delivery facility to send its messages. ICMP sends messages that perform the following control, error reporting, and informational functions for the TCP/IP protocol suite:

Host-to-Host Transport Layer

The protocol layer just above the internetwork layer is the host-to-host layer. It is responsible for end-to-end data integrity. The two most important protocols employed at this layer are the Transmission Control ProtocolUser Datagram Protocol (UDP). (TCP) and

TCP provides reliable, full-duplex connections and reliable service by ensuring that data is resubmitted when transmission results in an error (end-to-end error detection and correction). Also, TCP enables hosts to maintain multiple, simultaneous connections. When error correction is not required, UDP provides unreliable datagram service (connectionless) that enhances network throughput at the host-to-host transport layer.

Both protocols deliver data between the application layer and the internetwork layer. Applications programmers can choose the service that is most appropriate for their specific applications.

User Datagram Protocol

The User Datagram Protocol gives application programs direct access to a datagram delivery service, like the delivery service that IP provides. This direct access allows applications to exchange messages over the network with a minimum of protocol overhead.

UDP is an unreliable, connectionless datagram protocol. "Unreliable" merely means that the protocol has no technique for verifying that the data reached the other end of the network correctly. Within your computer, UDP will deliver data correctly.

Why do applications programmers choose UDP as a data transport service? A number of good reasons exist. If the amount of data being transmitted is small, the overhead of creating connections and ensuring reliable delivery may be greater than the work of retransmitting the entire data set. In this case, UDP is the most efficient choice for a host-to-host transport layer protocol.

Applications that fit a "query-response" model are also excellent candidates for using UDP. The response can be used as a positive acknowledgment to the query. If a response is not received within a certain time period, the application just sends another query. Still other applications provide their own techniques for reliable data delivery and do not require that service from the transport layer protocol. Imposing another layer of acknowledgment on any of these types of applications is redundant.

Transmission Control Protocol

Applications that require the host-to-host transport protocol to provide reliable data delivery use TCP because it verifies that data is delivered across the network accurately and in the proper sequence. TCP is a reliable, connection-oriented, byte-stream protocol.

Application Layer

The most widely known and implemented TCP/IP application layer protocols are listed below:

  • File Transfer Protocol (FTP). Performs basic interactive file transfers between hosts.

  • Telnet. Enables users to execute terminal sessions with remote hosts.

  • Simple Mail Transfer Protocol (SMTP). Supports basic message delivery services.

  • HyperText Transfer Protocol (HTTP). Supports the low-overhead transport of files consisting of a mixture of text and graphics. It uses a stateless, connection- and object-oriented protocol with simple commands that support selection and transport of objects between the client and the server.

In addition to widely known protocols, the application layer includes the following protocols:

  • Domain Name Service (DNS). Also called name service; this application maps IP addresses to the names assigned to network devices.

  • Routing Information Protocol (RIP). Routing is central to the way TCP/IP works. RIP is used by network devices to exchange routing information.

  • Simple Network Management Protocol (SNMP). A protocol that is used to collect management information from network devices.

  • Network File System (NFS). A system developed by Sun Microsystems that enables computers to mount drives on remote hosts and operate them as if they were local drives.

Some protocols, such as Telnet and FTP, can only be used if the user has some knowledge of the network. Other protocols, like RIP, run without the user even knowing that they exist.

Throughout this guide, we describe how Cisco Centri Firewall allows you to control access to these application layer protocols. This basic description of TCP/IP and the Internet reference model given in this appendix provides a basis for understanding what it is that Cisco Centri Firewall does and how it does it.


[Related Postings]

2007/04/12 - [Network] - OSI 7 layer와 TCP/IP
2007/07/28 - [Network] - [Scrap] 네트워크 개념과 동작 원리
2007/09/28 - [Network/Link for Network] - [Link] TCP/IP Network Basics / Cisco Routing
2007/09/28 - [Network/Link for Network] - [Link] TCP/IP의 이해(IP Address & Subnet)

2007년 10월 21일 일요일

OSI 7 layer와 TCP/IP

from Network Club NETSARANG

OSI 7 layer와 TCP/IP



사용자 삽입 이미지

OSI & TCP/IP Model


(drawn by jvm) Link된 문서에 나와있는 그림인데 오타가 있어서 MS Visio를 이용하여 새로 그렸다.

2007년 10월 11일 목요일

[Scrap] 네트워크 개념과 동작 원리

ZDNet Korea
이우영 (KT)   2005/03/25
원본출처

네트워크 디자이너가 되기 위한 첫 번째 시간에는 기본적인 인터네트워킹 디자인을 위한 네트워크의 기본 개념과 모델, 데이터 전송 방법 등을 설명하겠습니다. 노드와 링크가 조합을 이루고 그 조합을 통해 메시지가 전해지는 과정을 하나하나 자세하게 살펴보겠습니다.

네트워크는 노드(Nodes)와 링크(Link)의 조합입니다. 이러한 네트워크를 통해서 다양한 형태의 메시지를 전송하는 것이 통신(Communication)입니다. 네트워크 디자이너들은 이러한 조합을 통하여 전송 효율(Efficiency)을 최대한 높이는 데이터 전송망을 설계하는 사람들입니다.

그렇다면 네트워크 디자이너들은 무엇을 어떻게 이용하여 네트워크를 설계할까요? 그들은 보다 효율적인 네트워크 설계를 위하여 상황에 맞는 다양한 연장을 사용합니다. 때로는 수학적인 툴을 사용하기도 하고 때로는 소프트웨어 시뮬레이션과 같은 방법을 사용하여 시각적인 구현과 평가를 하기도 합니다.

독자들은 그동안 어떤 방법으로 네트워크를 구성하고 평가해 보았습니까? 이제 막 네트워크에 입문하는 중이라면 어떤 방법을 상상해 봤습니까? 저는 3회에 걸친 연재를 통하여 네트워크 디자이너가 특정한 업체의 디바이스를 얼마나 유효적절하게 사용하기 위한 사람이라는 정의가 매우 소극적인 것이라는 것을 얘기하고 싶습니다. 네트워크 디자이너는 소극적인 정의에 더하여 필요에 따라 알맞은 형태의 네트워크 디바이스들을 창조적으로 디자인할 수 있는 사람이어야 합니다.

랜카드, 라우터, 브리지(Bridge) 등의 네트워크 장치들을 필요에 따라 설계하고 만들어 낼 수 있는 네트워크 디자이너가 많아야지만 대한민국이 진정한 IT 강국으로서의 면모를 세계 속에 나타낼 수 있을 것입니다. 필자 또한 이러한 목표를 더욱 견고히 하는 계기로 삼고 네트워크에 관한 입문 이야기를 써내려가려고 합니다. 독자 여러분들도 ‘why’와 ‘how’를 생각하면서 읽어준다면 좋겠습니다.

생활 속의 네트워크
여러분은 현실에서 본인만의 네트워크를 설계해 본 적이 있습니까? 필자는 오늘 오전 제품 계약에 관한 업무를 수행하기 위해서 전세계에 지사가 있는 유명 택배회사를 통하여 중요한 서류를 미국 텍사스 달라스에 위치한 장비회사로 보냈습니다. 우선 작성한 서류를 본인이 다니는 회사 봉투에 넣고 택배회사 직원에게 전화로 연락하였습니다. 택배회사 직원이 사무실을 찾아와 준비해온 택배회사 봉투에 서류를 넣고 보내는 사람과 받는 사람의 주소를 기재하였습니다. 마지막으로 택배회사의 해외서비스 분류 방법에 기준하여 봉투에 고유 코드를 붙였습니다.

저는 이틀 이내에 제 서류가 장비회사에 전달되어야 한다고 요청하였고 택배회사 직원은 이 모든 것에 대한 가격을 책정해 지불하여 계약서류를 목적지로 보내는 일을 마무리하였습니다. 자 그럼 이 서류가 이제 어떻게 미국 텍사스 달라스에 위치한 회사로 전달될지 상상해 보겠습니까?

서류는 서울 사무소를 거쳐서 인천공항 지역에 위치한 택배회사의 분류창고로 옮겨 질 것입니다. 제가 이틀이라는 시간적인 제한을 요청하였기 때문에 제 서류는 특별하게 관리되어 아메리카 지역 구분으로 나뉘어있는 방으로 보내어 질 것입니다. 그리고 다시 미국 분류 상자 안으로 옮겨져 가장 빠른 비행기 편으로 미국 LA의 택배회사 창고에 도착할 것입니다.

다시 필자의 서류는 텍사스를 향하는 비행기로 옮겨지고 달라스에서 기다리고 있는 직원에 의해 마지막으로 세부 분류되어 필자의 회사와 계약을 체결하려고 기다리고 있는 업무 담당자의 손에 전해 질 것입니다. 택배회사는 담당자의 수신확인서를 이메일을 통해 저에게 전달해 줄 것입니다. 여러분도 이와 같은 경험을 해본 적이 있나요?

오늘 저는 보내는 사람(Source Node)과 받는 사람(Destination Node)이 노드가 되어 시간과 비용을 고려한 해외 택배 서비스(link)를 통하여 네트워크를 경험해본 것입니다. 이렇게 네트워크는 우리 생활 속에 있으며 또한 긴 역사를 가지고 있습니다. 단지 요즘 우리가 봇물처럼 터지는 노드와 노드의 전기적인 연결에 노출되어 이제서야 네트워크 세상 속에 사는 것처럼 느낄 뿐입니다. 마치 혁명과 같이 세상의 매일을 변화시키는 컴퓨터 노드와 노드의 링크, 네트워크. 짧은 인터넷의 역사와 함께 되짚어 보겠습니다.

인터넷의 역사
인터넷은 데이터 통신과 컴퓨터 네트워킹을 위한 수많은 새로운 통신규약(Protocol)과 기술들을 출현시켰습니다. 이러한 출현은 이제 너무나 일반적인 용어가 되어버린 월드 와이드 웹의 촉매 역할로 인해 그야말로 폭발적인 위력을 발휘하고 있습니다. 병상에 갇혀있는 환자에게 세상으로 연결되는 창을 주었으며 우주정복을 꿈꾸는 시골 소년에게 미국 항공 우주국(NASA)의 화성 프로젝트에 참여하는 우주인과의 대화를 가능하게 하였습니다.

인터넷의 기원은 거슬러 올라가 1969년 미국에서 시작되었던 알파넷(ARPANET) 과제에서 비롯됩니다. 알파넷은 미 국방성(Department of Defense)의 ‘Advanced Research Projects Agency’라는 이름으로 패킷 스위칭 기법을 이용하여 겨우 4개의 노드를 단지 50kbps로 연결하여 전송하는 네트워크의 설계와 구현으로 시작하였습니다(여러분은 3회의 연재에서 4개 혹은 그 이상의 노드를 연결하는 시뮬레이션을 해보게 될 것입니다).

이러한 알파넷은 텔넷과 FTP, 그리고 네트워크의 첫 번째 킬러 app이었던 전자메일을 통해 크게 발전하는 계기가 되었고 미국의 기관, 학교, 국가단체를 거쳐 세계로 연구와 개발이 확장되었고 드디어는 TCP/IP(1980), WWW(1991), Mosaic(1992), OC-3(155Mbps) Backbone(1996) 등 지금은 정확하게 셀 수도 없는 웹 페이지들이 인터넷에 올려져 있습니다.

<그림 1> 100개의 노드와 5만개의 노드 topology 비교

<그림 1>은 필자의 은사였던 헬미(Helmy) 교수의 강의 노트에서 따 온 것입니다. 왼쪽 그림은 100개의 노드로 이루어진 네트워크망을 디자인 해본 그림입니다. 오른쪽 그림은 자동 시뮬레이션 프로그램을 이용해서 왼쪽 디자인의 100개의 노드를 확장하여 5만여개의 노드가 연결되어 있는 인터넷 지도를 나타내 본 것입니다. 어떤 느낌이 드나요?

이 두 그림으로 인터넷이 얼마나 짧은 시간에 크게 확대되었는지 실감할 수 있을 것입니다. 이 모든 것이 처음에 말한 대로 두 개의 노드와 하나의 링크로 시작되었던 것입니다. 자 그럼 이제 두개의 노드와 그 링크가 어떠한 구조를 각각 가지고 있으며 어떠한 방법으로 데이터를 주고받고 있는지 좀 더 자세히 살펴보도록 하겠습니다.

네트워크 모델
일반적으로 통신은 애플리케이션, 컴퓨터, 네트워크의 세 개의 에이전트를 사용하고 있습니다. 애플리케이션이라고 하면 우리가 매일 사용하는 전자메일, 파일 다운로드 등과 같은 것을 말합니다. 이러한 애플리케이션들은 컴퓨터에서 수행됩니다. 또한 컴퓨터들은 네트워크에 연결되어서 서로 간에 네트워크를 통해 데이터를 보내기도 하고 받기도 하는 것입니다.

다양한 형태의 메시지를 노드와 링크로 주고받는 네트워크는 어떠한 방법으로 보내는 사람으로부터 전하는 사람을 지나서 받는 사람에게 전해질까요? 네트워크는 이러한 문제를 해결하기 위해 공통된 프로토콜을 정의하여 기능을 부가하고 컴퓨터 통신을 위한 연구 개발에 표준으로 삼기로 했습니다.

그렇다면 프로토콜이란 무엇일까요? 프로토콜의 사전적 정의는 협안, 조약안이지만 컴퓨터 통신에서는 2대 이상의 컴퓨터 통신을 위한 통신 규약이라고 말하고 있습니다. 사용하는 언어가 다른 사람들이 모여 높은 탑을 쌓는 공사를 하고 있을 때 표준으로 사용하는 언어(Protocol)와 단계(Procedure)가 없다면 어렵게 쌓아가고 있던 탑이 무너지고 말겠죠.

많은 기업과 학교, 그리고 과학, 공학, 국가단체들은 효율성과 사업모델, 이해관계를 놓고 오랫동안의 연구개발과 협의를 통하여 컴퓨터 통신의 표준을 정하고 있습니다. 이러한 방법으로 정형화된 컴퓨터 네트워크 프로토콜 중에 ISO(International Organization for Standardization)에서 개발된 OSI(Open System Interconnection) 모델이 있습니다. 하지만 7개의 계층으로 구성된 OSI 모델은 각 층간의 기능이 유사한 면이 있다는 단점이 있어 좀 더 명확한 기능과 단순한 계층을 갖고 있는 TCP/IP 프로토콜이 출현하게 되었습니다.

<그림 2> OSI와 TCP/IP 모델

OSI 모델
1978년 제작 초기 당시에만 해도 많은 OSI 디자이너들은 컴퓨터 네트워크에 이 모델이 가장 널리 사용되리라는 데 의문을 갖지 않았습니다. 결과적으로는 OSI 모델은 TCP/IP에 의해서 대체되고 말았지만 이러한 시도를 통해서 많은 유용한 프로토콜들이 개발되었고 7개의 계층으로 나뉘어 설계되었던 기능들은 다른 형태지만 아직도 같은 기능으로 존재하고 있습니다.

<그림 2>의 왼쪽 모델은 7개의 계층으로 구성된 OSI 모델입니다. 흔히 물리 계층(Physical Layer)에서 네트워크 계층(Network Layer)까지를 하위 계층 프로토콜이라고 하며 트랜스미션 계층(Transmission Layer)에서 애플리케이션 계층(Application Layer)까지를 상위 계층 프로토콜이라고 합니다.

7개의 계층 중에서 가장 위에 위치한 애플리케이션 계층은 사용자들이 OSI 환경을 액세스할 수 있도록 해줍니다. 그러기 위해 애플리케이션 계층은 사용자가 통신에 사용할 프로토콜 타입을 결정합니다. 여러 가지 애플리케이션에 따라 파일전송, 데이터베이스 접근, 전자메일 서비스에 맞는 프로토콜을 제공합니다. 그 다음 단계인 프리젠테이션 계층(Presentation Layer)은 애플리케이션 계층으로부터 전해진 다양한 데이터 타입을 전송 형식과 무관한 구문(syntax)의 형태로 변환하고 암호화(Encryption)하는 기능을 수행합니다.

세션 계층(Session Layer)은 데이터와 서비스를 교환하려는 애플리케이션과 프로세스(Process)간의 접속 설정, 관리, 종료에 관한 제어(Control)를 하는 계층입니다. 전송 계층(Transport Layer)은 데이터 전달과 접속에 신뢰성을 주는 곳으로써 데이터를 보내는 곳과 받는 곳 사이에서 에러(error)를 복구하고 흐름을 제어하는 기능을 수행합니다.

이러한 기능은 다음에 소개될 네트워크 계층과 유사하지만, 전자는 통신이 이루어지는 처음과 끝(End-to-End) 시스템 간의 데이터 전송에 관한 이야기이고 후자는 하나의 전송 링크에 관한 관리 기능을 제공하는 데 차이가 있습니다.

이러한 관리 기능을 수행하는 네트워크 계층은 경로의 선택과 중계 기능을 추가로 수행하고 있습니다. 또한 데이터의 전달 기능을 향상시키기 위해서 데이터의 크기를 알맞게 나누는 일을 수행합니다. 데이터 링크 계층(Data Link Layer)은 물리적인 링크간에 신뢰성 있는 정보를 제공하며 정보를 전송하기 위해서 데이터를 블록이나 프레임 단위의 일정한 크기로 전송하고 구분하는 기능을 수행합니다. 이렇게 나눠진 프레임은 각각 순차적인 번호를 부여 받게 되어 목적지에 도착했을 때 에러 검사와 순서화 기능에 사용됩니다.

물리 계층은 비트 레벨의 통신에 관심이 있는 계층입니다. 최하위의 계층으로써 가장 궂은 일을 한다고 볼 수도 있겠죠. 물리 계층은 전송 매체 사이의 인터페이스를 정의하여 데이터 링크 계층과의 사이에 기계적이고 전기적인 기능에 문제가 있는지를 살펴봅니다.

TCP/IP 모델
TCP/IP(Transmission Control Protocol/Internet Protocol) 모델은 인터넷이 개발되었던 알파넷 연구에서 비롯되었습니다. 이러한 배경은 TCP/IP가 인터넷 통신에 가장 적합하게 설계된 이유 중 하나입니다. TCP/IP는 보내는 사람에서 받는 사람까지의 플로우(flow)를 제어할 수 있으며 TCP와 IP 두 개의 프로토콜로 나눠서 통신이 가능하도록 합니다. 무엇보다 가장 큰 장점은 TCP/IP가 간단한 구조를 가지고 OSI의 7개 계층의 역할을 아무 무리 없이 수행해 낸다는 것이지요.

TCP/IP는 이러한 기능을 수행할 수 있는 프로토콜의 집합이라고 볼 수 있습니다. 우리가 많이 들어 알고 있는 프로토콜 이름의 대부분이 바로 TCP/IP의 애플리케이션 계층이라고 할 수 있습니다. 웹 서비스에 사용되는 HTTP를 비롯해서 일반 사용자가 다른 원격 호스트에 원격 로그인하여 자신의 컴퓨터처럼 사용할 수 있는 기능을 제공하는 텔넷, 파일 전송에 사용되는 FTP, 그리고 전자 우편 전송에 사용되는 SMTP(Simple Mail Transfer Protocol) 등을 예로 들 수 있습니다. 이러한 다양한 애플리케이션 프로토콜들은 사용자에게 다양한 애플리케이션을 수행할 수 있도록 도와주는 역할을 합니다.

전송 계층은 호스트 투 호스트(Host-to-Host) 계층이라고도 불리며 출발지에서 보내진 데이터가 목적지에 도착했을 때 출발 당시의 순서대로 정렬될 수 있도록 하는 일처럼 데이터가 송신자에게서 수신자에게까지 신뢰성있게 전송되고 받을 수 있는 역할을 합니다. TCP는 이러한 기능을 수행하는 가장 대표적인 프로토콜입니다.

전송 계층에는 TCP와 함께 UDP(User Defined Protocol)라는 또 다른 프로토콜이 있는데 UDP는 TCP와 달리 신뢰성을 보장할 수 없는 프로토콜입니다 (Unreliable/Connectionless). 따라서 신뢰성이 필요 없는 데이터를 전송할 때는 IP 위에 UDP를 올려 사용하여 데이터의 크기를 줄일 수 있는 장점도 있습니다. TCP와 UDP는 오류 검사를 이용하여 모두 체크섬(Checksum)이라는 방법을 사용하는데, 체크섬은 간단한 2진 덧셈을 통하여 오류를 검색하는 방법입니다.

인터넷 계층(Internet Layer)에서는 인터넷 프로토콜(IP)을 사용하여 인터넷 라우팅과 전송에 사용되는 인터넷 주소를 메시지에 포함하여 송수신지를 결정하게 됩니다. OSI 모델에서는 네트워크 계층이 이러한 기능을 수행합니다. 2004년 현재까지 아직 주소 할당에 32비트를 제공하는 IPv4가 TCP/IP 프로토콜이 주되게 사용되고 있으나 수많은 무선 장치의 등장과 인터넷 사용자 증가로 인한 한계성을 인식하고 주소할당에 128비트를 제공하는 IPv6로의 전환을 준비하고 있습니다.

네트워크 액세스 계층(Network Access Layer)은 서버(Server)와 워크스테이션(Workstation)의 End System, 추가되는 네트워크를 통한 데이터 전송, 그리고 전송 매체에 관심을 가지고 있습니다. 이 계층에서는 사용되는 서비스의 우선순위를 관리하기도 하고 데이터 전달에 관한 주소를 제공하기도 합니다. 물리 계층은 OSI 모델의 그것과 유사한 기능을 수행합니다. 물리적인 수준의 데이터 전송 장치들과 전송 장비 혹은 네트워크간의 인터페이스를 제공하며 전송매체에 관한 특성, 전송 속도 등을 지정합니다.

네트워크로 메시지 보내기
이제 TCP/IP 모델을 이용하여 어떻게 데이터를 소스에서 목적지까지 보내는지 송신자(Sender), 라우터(Router), 수신자(Receiver)의 단계로 구분해서 살펴보도록 하겠습니다. 우리가 살펴볼 예제는 하나의 라우터가 ATM으로 구성된 장거리 네트워크(WAN)에 연결되어 있어 보내는 쪽(서버)과 받는 쪽(사용자 컴퓨터)을 연결하고 있다고 가정하고 있습니다. 그리고 지금 막 사용자가 마우스를 이용하여 브라우저에서 임의의 아이콘을 클릭해서 파일전송이나 웹페이지의 데이터를 요구했다고 가정합니다. 그럼 서버(송신자)가 라우터를 통해 사용자 컴퓨터에게 어떻게 응답(Response)하여 메시지를 수신자에게 보내는지 살펴보도록 하겠습니다.

TCP/IP: 송신자 메시지 보내기

<그림 3> 데이터 보내기

사용자 컴퓨터(수신자)로부터 전해진 메시지 요구로 인하여 서버쪽(송신자) 애플리케이션 계층은 전송할 데이터 블록과 프로토콜을 결정합니다. 만약 전자메일에 관한 요구였다면 SMTP를, 파일이었다면 FTP를 말이죠. 이 단계에서 데이터 송신과 수신 쪽에서 교환하는 데이터의 형태에 대한 동의를 하게 되며 필요하다면 데이터는 목적지에서 압축 또는 암호화(Data Encryption)되거나 보기 쉬운 형태로 변형됩니다.

TCP가 접속을 허가하기로 약속하면 데이터를 세그먼트(segment)라고 불리는 데이터 블록으로 만듭니다. 각각의 세그먼트에는 헤더(header)가 포함되어 있어 전송 에러 검출과 함께 도착지에서 데이터의 순서를 알 수 있도록 해줍니다.

또한 각각의 TCP 세그먼트는 목적지로의 전송시 데이터 손실 등의 경우를 대비해 목적지로부터 데이터가 잘 도착했다는 메시지(acknowledgment)가 도착하기 전까지 복사되어 보관되었다가 확인 메시지가 도착하면 복사본을 지웁니다. 다시 세그먼트는 IP 계층으로 전달되고 IP는 각각의 세그먼트들을 데이터그램(datagram) 단위로 나누어 네트워크 전송에 맞는 사이즈로 재정비합니다. 이때 각각의 데이터 그램은 목적지 주소, 프레임 검사 순서, 제어 정보 등을 가지게 되며 이러한 기능을 프래그먼팅(fragmenting)이라고 합니다.

우리는 첫 번째 네트워크가 서버가 ATM WAN에 연결되어 있다고 가정하고 있기 때문에 이러한 프래그먼트는 다시 ATM 헤더를 포함하여 ATM 네트워크에 전송에 적합한 형태(ATM cell)로 변하게 됩니다. 이러한 Cell은 비트로 표현되어 네트워크 미디엄(network medium)을 통해 라우터로 보내지게 됩니다.

TCP/IP: 메시지 라우터 지나가기

<그림 4> 메시지 라우터 지나가기

라우터는 서로 다른 분리된 네트워크를 연결해 주는 기능을 제공하는 장치입니다. 라우터는 데이터의 목적지 정보가 담겨 있는 헤더를 이용해서 네트워크 상의 가장 효율적인 경로를 선택 패킷을 목적지로 보냅니다. 또한 라우터는 흐름제어 역할과 네트워크 관리 기능을 수행함으로 네트워크의 꼭 필요한 구성 요소입니다. <그림 4>는 ATM Cell의 형태로 전달된 데이터가 물리 계층에 비트 형태로 전달되는 것을 시작으로 보여줍니다.

ATM 계층은 전달된 데이터의 ATM Cell 헤더를 제거하고 헤더를 통해서 라우터에 데이터가 도착하기까지 아무런 에러가 없었는지 살펴봅니다. 또한 접속 번호를 통해서 발신지를 알 수 있습니다. ATM Cell 헤더가 제거된 메시지는 IP 계층에서 IP 헤더를 검사하게 됩니다. 검사 후 IP는 어떠한 경로로 메시지를 목적지에 보낼 것인가를 확정하게 됩니다.

이러한 경로는 목적지와 다시 다른 라우터가 될 수 있지만 우리는 본 예제에서 하나의 라우터를 사용하는 관계로 IP는 데이터그램을 곧바로 목적지로 보내 줄 것입니다. 데이터그램은 LLC(Logical Link Control)로 보내어져 다시 LLC 헤더가 추가되고 LLC PDU(Protocol Data Unit)라고 불리는 세분화된 블록 단위로 사용됩니다. 이 헤더는 주소와 순서에 관한 정보가 포함되어 있습니다. 다시 LLC PDU는 MAC(Media Access Control)으로 보내지고, 여기서 MAC 프레임을 구성하게 됩니다.

특이하게도 이 과정에서는 MAC 헤더와 트레일러(trailer)가 LLC PDU의 시작과 끝에 붙는데 헤더에는 주소 정보가 트레일러에는 에러검출을 위한 프레임 체크 시퀀스 정보가 저장됩니다. 여태껏 우리가 살펴본 중 가장 긴 형태의 메시지는 이제 마지막 목적지를 향하게 됩니다.

TCP/IP: 수신자가 메시지 받기
드디어 목적지에 메시지가 도착했지만 아직 이곳에서도 몇 번의 과정이 기다리고 있습니다. 물리 계층을 통해 비트 프레임의 형태로 전달된 시그널은 MAC 계층에서 헤더와 트레일러를 제거하고 트레일러를 이용해서 에러 검출을 하게 됩니다. 그리고 LLC 계층에서는 헤더를 제거하고 데이터 흐름과 에러 조절을 위해 순서를 조절하게 됩니다. IP 계층에서도 헤더를 제거하고 프레임 검사와 다른 제어정보가 전달되면서 IP 데이터그램의 형태가 됩니다.

TCP 계층 단에서는 다시 한번 헤더 삭제와 함께 흐름 조절이 이루어집니다. 또한 프레임을 체크하게 됩니다. TCP 단에서는 전송지에서 세그먼트 형태로 나뉘어졌던 사용자 데이터를 다시 블록으로 결합한 후에 애플리케이션 단으로 전달하게 됩니다. 마지막으로 메시지가 애플리케이션 단으로 전달되면서 압축을 풀거나(decompression), 암호화를 해제하는(decryption) 등의 기능을 수행하여 데이터가 적합한 파일과 목적지로 바르게 전달되도록 합니다.

<그림 5> 데이터 목적지 도착

데이터 전송 방식, 유니캐스트 VS 멀티캐스트
네트워크의 데이터의 전송 방식은 송신자와 수신자의 입장에서 데이터를 전송하는 방식에 따라 유니캐스트(Unicast)와 멀티캐스트(Multicast)로 나누어집니다. 유니케스트는 네트워크상에서 단일 송신자와 단일 수신자 간의 데이터 전송 방식을 지칭합니다. <그림 7>을 보면 송신자는 목적지 R1, R2, R3과 R4에 독립된 각각의 데이터를 전송합니다.

이러한 방식을 특별하게 멀티플 유니캐스트(Multiple Unicast)라고 하는데, 예전 네트워크를 구성하던 노드 대 노드의 일 대 일(One to One) 연결에 적합한 데이터 전송 방식입니다. 만약 <그림 7>과 같이 데이터의 송신지가 많은 경우에는 특별한 목적이 아니라면 모두에게 데이터를 보내기 위해 각각의 수신자에게 여러 번 데이터를 보내야 하는 유니캐스트를 사용하지 않는 것이 네트워크의 효율을 높일 수 있을 것입니다. 하지만 요즘의 인터넷 통신은 일 대 일 연결이 보편화되어 있고 라우터가 유니캐스트 방식만을 지원하기 때문에 유니캐스트 방식이 가장 많이 사용되고 있습니다.

<그림 6> 멀티플 유니캐스팅과 멀티 캐스팅

멀티캐스트 전송 방식은 하나의 전송자가 하나 이상의 송신자들에게 한 번에 데이터를 전송하는 방식으로 다 대 다(Multipoint to Multipoint) 통신을 위한 방법입니다. <그림 7>의 멀티캐스트를 살펴보면, 전송자는 송신자들에게 동시에 같은 데이터를 전송하는 것을 알 수 있습니다.

이러한 멀티캐스트 전송 방법은 같은 LAN에 연결되어 있는 그룹 사용자들에게 한 번에 메시지를 전송하는 데 적합한 방식입니다. 실제로 이러한 방식은 다중 접속이 되어 있는 인터넷 전화와 영상통신에 많이 응용됩니다. 이러한 전송 방식의 구분은 연재의 마지막 시간에 다룰 NS-NAM으로 해볼 네트워크 시뮬레이션을 이해하는 데 도움이 될 것입니다.

서비스의 속도와 질의 향상을 위해
인터넷과 인터넷 프로토콜은 최선형(best-effort)을 제공하기 위해 디자인되었습니다. 다시 말해서 인터넷과 IP 기반 네트워크는 네트워크상의 패킷을 각각 동일하게 취급하여 목적지로 전송한다는 뜻입니다. 이러한 기본 정의 하에서 네트워크상에 트래픽이 늘고 혼잡(congestion)이 생기기 시작하면 패킷 전송은 점차로 늦어지게 됩니다. 혼잡이 더 크게 발생되면 심지어는 패킷 들을 드랍하여 전송 데이터에 손실을 주게 됩니다. 때문에 네트워크 디자이너에게 Traffic과 Congestion Control은 무엇보다 더 중요한 요소가 됩니다.

평가와 분석 단계에서도 중요성은 계속 인식되어야 합니다. QoS란 높은 데이터 비율(data rate)을 가지고 정확하게 데이터를 전달하는 것을 말합니다. 물론 컴퓨터통신에서 전달에 관한 신뢰성은 매우 중요한 요소입니다. 이러한 QoS를 나타내는 지표로써 흔히 작업 처리량(Throughput), 지연(delay), 패킷 손실(packet loss) 등을 사용합니다.

이러한 요소들은 실생활의 예를 통해서도 쉽게 그 중요성을 인식할 수 있습니다. 늘 지연되곤 하는 네트워크를 이용하는 외환딜러는 그렇지 않은 딜러들과의 경쟁에서 항상 불이익을 받게 될 것입니다. 또 음성이나 비디오 파일 등의 실시간 트래픽(real time traffic)에서 패킷 손실이 많이 일어난다면 우리는 자연스러운 음성과 화면을 볼 수가 없겠지요. 다음 연재에서는 이러한 문제들을 ‘큐잉 이론과 네트워크 디자인’에 관한 주제로 독자 여러분과 함께 살펴보려고 합니다.

2007년 8월 1일 수요일

OSI 7 Layer Protocol Map

Protocol Map



more Informations

IP Sub-Networking Mini-Howto v.1.1 (english)

MS Word Doc(reformatted by jvm)
---------------------------------------------------------------------------------------

Next Previous Contents

IP Sub-Networking Mini-Howto

Robert Hart, hartr@interweft.com.au

v1.1, 30 August 2001


This document describes why and how to subnetwork an IP network - that is using a single A, B or C Class network number to function correctly on several interconnected networks.

1. Copyright

2. Introduction

3. The Anatomy of IP numbers

4. What are subnets?

5. Why subnetwork?

6. How to subnetwork a IP network number

7. Routing


Next Previous Contents

IP Sub-Networking Mini-Howto v.1.0 (translated into korean)


IP Sub-Networking Mini-Howto

Robert Hart, hartr@interweft.com.au

v1.0, 31 March 1997

번역: 정재영 dannybox@nownuri.net


이 문서는 IP 네트워크의 서브넷을 사용하는 이유와 방법에 대해 설명한다. 즉 몇개의 네트워크에 연결된 상황에서 제대로 동작하는 A,B,C 클래스 네트워크 번호를 사용하는 것이다.

1. Copyright

2. Introduction

사용 가능한 IP 네트워크 번호가 점점 희귀해짐에 따라, 이 부족한 자원을 효율적으로 이용하는 것이 중요해졌다. 이 문서는 하나의 IP 네트워크 번호를 여러개의 다른 네트워크에서 사용할 수 있도록 하나의 IP 네트워크 번호를 어떻게 나누는 가에 대해 설명하고 있다. 이 문서는 주로 클래스 C IP 네트워크 번호에 대해 설명할 것이지만, 그 규칙은 A, B 클래스에도 동일하게 적용된다.
  • 2.1 다른 유용한 정보들

IP 번호에 대한 자세하고 기본적인 정보를 알려주는 몇 가지 문서가 있다. 저자가 읽어보길 권하는 문서들은

3. IP 번호의 해부

서브네트워킹의 즐거움을 만끽하기 전에 먼저 IP 번호에 대한 기본적인 지식을 가져야 한다.
  • 3.1 IP 번호는 호스트가 아닌 인터페이스에 속한 것이다.

    무엇보다도 먼저 잘못된 이해의 기본적인 원인을 분명히 해야 한다. IP 번호는 호스트에 할당된 것이 아니다. IP 번호는 호스트의 네트워크 인터페이스에 할당된 것이다. 많은(대부분이 아닐지라도) IP 네트워크상에 존재하는 컴퓨터가 하나의 네트워크 인터페이스를 소유하지만(그리고 그 결과 하나의 IP 번호를 가지지만), 이러한 경우만 있는 것은 아니다. 컴퓨터와 다른 디바이스들은 몇 개의(많지는 않더라도) 네트워크 인터페이스를 가진다. 그리고 이 각각의 네트워크 인터페이스는 각각의 IP 번호를 가진다. 그러므로 6개의 활성화된 인터페이스를 가진 디바이스는 6개의 IP 번호를 가진다. 그리고 각각의 IP 번호는 연결된 각각의 네트워크에 대한 인터페이스에 할당된다. 그 이유는 IP 네트워크를 볼 때 명확해진다.

    그럼에도 불구하고, 대부분의 사람은 IP 번호를 말할 때 대개 호스트 주소를 언급한다. 여기서 기억해야 할 것은 이것은 호스트에 존재하는 특별한 인터페이스에 대한 IP 번호를 줄여서 지칭한다는 것이다. 인터넷에 존재하는 많은 디바이스 (다수가 아니더라도)는 하나의 인터페이스만을 가지므로 하나의 IP 번호를 가진다.

  • 3.2 "Dotted Quads"로 표현된 IP 번호

    현재의 IP 번호를 구현한 것에 따르면(IPv4), IP 번호는 4(8비트)개의 바이트로 구성되어 총 32비트를 사용하여 정보를 표시한다. 그 결과 꽤 넓은 영역을 표현할 수 있다.(10진수로 표현 되더라도). 그리고 사람들이 읽기 쉽도록 IP 번호는 대개 "dotted quad" 형식으로 표현된다.

    IP 번호 192.168.1.24 는 점(.)으로 구별된 4개의 숫자(10진수)의 예이다.

    4 숫자 각각은 8비트 바이트를 10진수로 표현한 것이고, 각각의 4개 숫자는 0부터 255까지 표현할 수 있다.(여기서 기억해야 할 것은 0도 하나의 숫자이므로 총 256개라는 것이다)

    또한 호스트 IP 번호의 일부는 호스트가 위치한 네트워크를 표시하고, 남은 숫자 는 호스트(네트워크 인터페이스) 그 자체를 표시한다. 정확하게 몇 개의 비트 가 네트워크 ID에 사용되고, 네트워크에 있는 호스트를 구별하는데 몇 개의 비트 가 사용되는가 하는 것은 네트워크의 '클래스'에 결정된다.

  • 3.3 IP 번호의 클래스들

    IP 번호에는 3개의 클래스가 있다.(역자 주: 실제로는 멀티캐스트를 위한 클래스 D가 있으므로 4개이다. 클래스 D는 224.0.0.0-240.0.0.0의 주소를 가진다)

    • 클래스 A IP 번호는 네트워크를 구별하는데 가장 왼쪽의 8개 비트(dotted quad의 가장 왼쪽)를 사용하고, 나머지 24비트(나머지 세 개 dotted quad)를 사용하여 네트워크의 인터페이스를 구별한다. 클래스 A 주소의 가장 왼쪽 비트는 항상 0이다 - 즉 첫 번째 dotted quad는 십진수로 0에서 127의 값을 가진다. 그러므로 최대 128개의 클래스 A 네트워크 번호가 가능하고, 각각 33,554,430개의 사용 가능한 인터페이스를 가진다. 그러나 네트워크 0.0.0.0(기본 라우트(default route)) 와 127.0.0.0 (루프 백 네트워크)는 특별한 의미를 가지기 때문에 네트워크를 구별하는데는 사용되지 않는다. 그러므로 126개의 클래스 A 네트워크 번호만을 사용할 수 있다.
    • 클래스 B IP 번호는 네트워크를 구별하는데 왼쪽 16개의 비트(왼쪽의 2개 dotted quad)를 사용하고 나머지 16비트를(나머지 2개의 dotted quad) 사용하여 호스트 인터페이스를 구별한다. 클래스 B 주소는 가장 왼쪽 바이트의 2개의 왼쪽 비트를 항상 10으로 가진다.(역자 주: 2진수로 표현하면 10xxxxxx.xxxxxxxx .xxxxxxxx.xxxxxxxx). 그러므로 나머지 14비트를 사용하여 32767개의 클래스 B 네트워크를 사용할 수 있다. 그러므로 클래스 B 네트워크는 dotted quad의 첫 번째 바이트에 대해 128에서 191까지의 영역을 가지고, 각각의 네트워크는 최대 32,766개의 이용 가능한 인터페이스를 가진다.
    • 클래스 C IP 번호는 처음의 24비트를 사용하여 네트워크를 구별하고, 나머지 8비트로 호스트 인터페이스를 구별한다. 클래스 C 주소는 왼쪽 3개 비트가 항상 110이거나 dotted quad로 192에서 255의 영역을 가진다. 그러므로 사용 가능한 클래스 C 네트워크 번호는 4,194,303개이고 각각은 254개의 인터페이스를 가진다. (첫번째 바이트가 223보다 큰 네트워크는 이미 예약이 되어 있어 사용할 수 없다) 요약하면
         네트워크 클래스          사용 가능한 첫 번째 바이트의 범위(십진수)
      A 1 에서 126
      B 128 에서 191
      C 192 에서 254

      'unconnected' 네트워크를 위해 미리 예약된 특별한 주소가 있다. 즉 IP를 사용하는 네트워크이지만 인터넷에 연결되어 있지 않는 것들이다. 이 주소들은
    • 한개의 클래스 A 네트워크 10.0.0.0
    • 16개의 클래스 B 네트워크 172.16.0.0 - 172.31.0.0
    • 256개의 클래스 C 네트워크 192.168.0.0 - 192.168.255.0 이 문서에서는 '실제' 네트워크나 호스트와의 혼동을 피하기위해 이 순서들을 사용할 것이다.
  • 3.4 네트워크 번호, 인터페이스 주소와 브로드캐스트 주소들

    IP 번호는 3가지 의미를 가질 수 있다.

    • IP 네트워크의 주소(공통된 전달 매개체를 사용하는 IP 디바이스의 그룹 - 같은 이더넷 세그먼트에 존재하는 모든 것들). 네트워크 번호는 항상 주소 영역의 인터페이스(호스트) 비트를 0로 설정한다. (네트워크가 서브넷으로 나누어지지 않는한)
    • IP 네트워크에 대한 브로드캐스트 주소(주소는 IP 네트워크의 모든 디바이스에 동시에 '이야기'하기 위해 사용된다.). 네트워크에 대한 브로드캐스트 주소는 인터페이스(호스트) 비트를 1로 설정한다.(역시 네트워크가 서브넷으로 나누어 지지 않는 한)
    • 인터페이스의 주소(호스트에 있는 이더넷 카드나 PPP 인터페이스, 라우터 , 프린터 서버 등등). 이 주소들은 모두 0 이거나 1인 경우를 제외한 임의의 값들을 가질 수 있다. 만일 호스트 비트가 모두 0이면 그 주소는 네트워크 주소가 되고, 호스트 비트가 모두 1이면 그 주소는 브로드캐스트 주소가 된다.
요약하면
클래스 A 네트워크에 대해 (1바이트의 네트워크 주소 영역과 3바이트의 호스트 주소 영역)
  10.0.0.0 은 주소의 모든 호스트 비트가 0이므로 클래스 A 네트워크 번호이다. 
  10.0.1.0 은 이 네트워크의 한 호스트의 주소이다.
  10.255.255.255 는 주소의 모든 호스트 비트가 1이므로 이 네트워크의 브로드캐스트 주소이다.
          클래스 B 네트워크에 대해 (2바이트의 네트워크 주소 영역과 2바이트의 호스트 주소 영역)
172.17.0.0 은 클래스 B 네트워크 번호이다.
172.17.0.1 은 이 네트워크의 한 호스트의 주소이다.
172.17.255.255 는 네트워크 브로드캐스트 주소이다.

클래스 C 네트워크에 대해 (3바이트의 네트워크 주소 영역과 1바이트의 호스트 주소 영역)
192.168.3.0 은 클래스 C 네트워크 번호이다.
192.168.3.42 는 이 네트워크의 한 호스트의 번호이다.
192.168.3.255 는 네트워크 브로드캐스트 주소이다.
          현재 호스트에 할당이 가능한 대부분의 IP 네트워크 번호는 클래스 C 주소이다.
  • 3.5 네트워크 마스크(network mask)

    네트워크 마스크는 '서브넷 마스크'로 불려야 더 정확하다. 그러나 대개 네트워크 마스크라 부른다.

    여기서 우리가 가장 관심을 갖고 있는 내용인 IP 주소가 IP 네트워크 영역에서 어떻게 지역적으로 해석되는지는 네트마스크에 의존하며, 이것이 서브네트워킹의 형태를 결정한다. 기본적인 네트워크 마스크는 모든 네트워크 비트가 '1'이고 모든 호스트 비트가 '0'이다. 이것들은 세가지 클래스의 네트워크에 대한 기본적인 네트워크 마스크이다:-

    • 클래스 A 네트워크 마스크: 255.0.0.0
    • 클래스 B 네트워크 마스크: 255.255.0.0
    • 클래스 C 네트워크 마스크: 255.255.255.0 네트워크 마스크에 대해 기억해야 할 두가지 중요한 사항이 있다:-
    • 네트워크 마스크는 오직 지역 IP 번호의 지역적인 해석에만 영향을 미친다. (여기서 '지역'이란 특별한 네트워크 부분을 의미한다)
    • 네트워크 마스크는 IP 번호가 아니다 - 이것은 지역 IP 번호가 어떻게 지역적 으로 해석되는지 결정할 때 사용된다.

4. 서브넷이란 무엇인가?

서브넷이란 하나의 IP 네트워크 주소를 지역적으로 나누어 이 하나의 네트워크 IP 주소가 실제로 여러개의 서로 연결된 지역 네트워크로 사용할 수 있도록 하는 방법이다.

여기서 중요한 단어는 '지역적' 라는 것이다. 머신 바깥의 세계와 서브넷으로 나뉜 IP 네트워크에 포함되는 실제 네트워크는 어떤 사항이 바뀌더라도 여전히 하나의 IP 네트워크이다. 기억해야 할 것은 하나의 IP 네트워크는 오직 하나의 네트워크에서만 사용될 수 있다는 것이다.

5. 왜 서브넷을 사용하나?

서브네트워킹을 사용하는 이유를 알려면 초창기 IP 규약을 제정했던 시절로 돌아가야 한다. 이때는 클래스 A 네트워크 번호를 가지면서 몇 백만개의 호스트를 가질 수 있었던 몇 개의 사이트만이 존재했다.

만일 거대한 사이트에 있는 모든 IP 컴퓨터들이 서로 같은 네트워크에 연결되길 원한다면 엄청난 트래픽과 관리상의 문제점이 발생할 것은 명백했다: 네트워크를 관리하는 것은 거대한 짐승을 기르는 것과 같은 악몽일 것이고, 네트워크는 아마도 (거의 확실히) 자신의 트래픽 때문에 붕괴될 것이었다. 만일 서브네트워킹을 사용하면: 클래스 A 네트워크 번호는 몇개의 네트워크로 구분될 것이다. 물론 나뉘어진 각각의 네트워크는 쉽게 관리할 수 있을 것이다.

이것은 작고 관리하기 쉬운(상대적으로) 네트워크가 만들어지는 것을 의미한다. - 분명히 서로 다른 네트워크 기술을 이용하면서. 그러나 같은 물리적인 네트워크에서는 이더넷, 토큰 링, FDDI, ATM등을 섞어서 사용할 수 없다. 서브네트워킹을 사용하는 다른 이유는:-

  • 실제 사이트 구성은 물리적인 인프라스트럭쳐들이 어떻게 연결되었는 가에 따라 제한(케이블 길이등)을 가질 수 있다. 서브네트워킹은 하나의 IP 번호를 사용하여 IP 환경내에서 이것들을 가능하도록 한다. 실제로 이런 일들은 영구적으로 연결된 고객들에게 지역 네트워크의 정적 IP 번호(static IP number)를 주고 싶어하는 ISP(Internet Service Provider)들에 의해 매우 흔히 이루어지고 있다.
  • 네트워크 트래픽은 심각한 속도 저하를 일으킬 정도로 충분히 많다. 네트워크를 서브넷으로 나눔으로써 한 네트워크 지역에 한정된 트래픽을 그 지역에만 한정되도록 할 수 있다. 이 경우 전체적인 트래픽을 줄여 실제 네트워크 대역폭을 늘이지 않고도 네트워크 연결속도를 증가시킬 수 있다.
  • 보안상의 요구로 인해 다른 클래스에 있는 사용자들은 같은 네트워크를 공유할 수 없다 - 네트워크를 잘 아는 사람은 항상 다른 네트워크의 트패픽을 가로챌 수 있다. 서브네트워킹은 마케팅 부서가 R & D 부서의 네트워크 트래픽을 훔쳐보지 못하게 한다.(혹은 학생들이 관리자 네트워크를 훔쳐보지 못하도록 하거나)!
  • 서로 호환되지 않는 네트워킹 기술을 사용하는 장비를 이용하면서, 이들 사이에 상호 연결이 필요한다.

6. IP 네트워크 번호를 서브넷으로 나누는 방법

여러분의 IP 네트워크 번호를 서브넷으로 나눌 필요가 있다고 결정했다면 이제 어떻게 해야할까? 아래의 내용은 해야 할 일들을 자세히 설명하고 있다.

  • 실제적인 연결을 설정한다.(네트워크 선과 라우터와 같은 네트워크 연결들)
  • 서브넷에 연결될 디바이스의 갯수로부터 서브넷이 얼마나 커야 할지를 결정한다. 다시 말하면 각각의 구역에 대해 얼마나 많은 IP 번호가 필요한 지 결정한다.
  • 적절한 네트워크 마스크와 네트워크 주소를 계산한다.
  • 네트워크의 각각의 인터페이스에 고유의 IP 주소와 적절한 네트워크 마스크를 할당한다.
  • 라우터에서 라우트를 설정하고 네트워크 디바이스에서 적절한 게이트웨이와 라우트 그리고/혹은 기본 라우트를 설정한다.
  • 시스템을 테스트해보고 문제점이 발견되면 고친다. 그리고 한숨 돌린다. ^^ 앞으로 설명할 예제를 위해 하나의 클래스 C 네트워크 번호 192.168.1.0을 서브넷으로 나누는 것으로 가정한다.
이 IP 네트워크는 최대 254개의 인터페이스(호스트)를 가질 수 있고, 반드시 네트워크 자신을 표현할 네트워크 번호(192.168.1.0) 그리고 브로드캐스트 주소 (192.168.1.255)를 가진다.
  • 6.1 실제적인 연결 설정하기

여러분은 여러분이 관리해야할 네트워크의 실제 구조와 잘 부합되도록 모든 디바이스들이 상호연결 되도록 하기위해 정확한 케이블 인프라스트럭쳐 (infrastructure)를 설치해야 할 것이다.

또한 여러분은 다양한 부분(라우터, 미디어 변환기 등등)을 상호 연결할수 있는 매커니즘이 필요할 지도 모른다. 분명히 이것에 대한 자세한 설명은 불가능하다. 도움이 필요하다면 이러한 서비스를 제공하는 주위의 네트워크 디자인/설치 전문가를 만나보는 것이 좋다. 또한 유즈넷 뉴스 그룹을 보면 무료로 제공되는 많은 조언들을 얻을 수 있다. ( comp.os.linux.networking과 같은 뉴스 그룹)

  • 6.2 서브넷 크기 정하기

여러분이 만든 서브넷의 갯수와 '잃어버린' IP 번호의 개수 사이에는 타협이 필요하다. 모든 각 IP 네트워크에서는 2개의 주소를 인터페이스(호스트) 주소로 사용할 수 없게 된다 - 네트워크 IP 번호 그 자체와 브로드캐스트 주소. 여러분이 서브넷을 구성하면 각각의 서브넷은 네트워크 자신을 표시할 고유한 IP 네트워크 번호와 브로드캐스트 번호를 필요로 하며, 이 번호들은 서브넷의 IP 네트워크 에 의해 지정된 범위내에서 유효한 것이어야 한다.

그러므로 IP 네트워크를 두개의 서브넷으로 분리하는 것은 2개의 네트워크 주소와 두개의 브로드캐스트가 필요하다는 것이므로, 이는 곳 '사용불가능한' 인터페이스 (호스트) 주소가 증가한다는 것을 의미한다. 만일 4개의 서브 네트워크를 만든다면 이 숫자는 8로 증가하게 된다.

사실 가장 작은 서브넷도 4가지 IP 번호로 구성되어 있다.

  • 두개의 사용가능한 IP 인터페이스 번호- 한개는 그 네트워크의 라우터 인터 페이스를 위한 것이고 나머지 한개는 그 네트워크의 싱글 호스트를 위한 것
  • 한개의 네트워크 번호
  • 한개의 브로드캐스트 주소
왜 이렇게 사용하지 못하는 IP 숫자를 늘여가면서 작은 네트워크를 만드는 가 하는 것은 또 다른 문제이다. 네트워크에 오직 하나의 호스트가 있다면 어떠한 네트워크 통신도 다른 네트워크로 나가야 한다. 그러나 앞으로 보게될 예제는 서브넷에 적용되는 수익 체감의 법칙을 잘 보여줄 것이다.

이론적으로 IP 네트워크 번호는 똑같은 크기를(서브넷으로 나눈 후 서브 네트워크들을 결합할 수도 있다.) 갖는 2^n개의 서브넷으로 나눌 수 있다.(이때 n은 여러분의 IP 네트워크 번호의 호스트 비트의 갯수보다 하나 적은 숫자이다)

그러므로 자신의 네트워크를 디자인하는데 현실적이어야 한다 - 여러분은 관리, 실제적인 장비, 보안상의 제한등을 고려하여 가능하면 로컬 네트워크의 숫자를 줄이는 방향으로 디자인을 해야한다.

  • 6.3 서브넷 마스크와 네트워크 번호 계산하기

IP 네트워크를 서브넷으로 나누는 마술을 발휘하는 것은 네트워크 마스크 이다. 서브넷으로 나누어지지 않은 IP 네트워크 번호에 대한 네트워크 마스크는 단순히 네트워크의 번호의 모든 '네트워크 비트'를 '1'로 설정하고 모든 호스트 비트를 '0'으로 설정한 것이다.

그러므로 IP 번호의 세가지 클래스에 대한 표준 네트워크 마스크는 다음과 같다.

  • 클래스 A (8개의 네트워크 비트) : 255.0.0.0
  • 클래스 B (16개의 네트워크 비트): 255.255.0.0
  • 클래스 C (24개의 네트워크 비트): 255.255.255.0
서브넷이 동작하는 방법은 하나 혹은 그 이상의 사용가능한 호스트 비트를 빌려와서 인터페이스가 빌려온 비트를 네트워크의 일부로 해석하도록 하는 것이다. 그러므로 네트워크 번호를 두개의 서브넷으로 나누기 위해서는 첫번째 호스트의 네트워크 마스크 비트에서 적절한 비트를 '1'로 지정하여 한개의 호스트 비트를 빌려온다.

클래스 C 주소에 대해 네트워크 마스크는 11111111.11111111.11111111.10000000 또는 255.255.255.128가 된다. 우리가 살펴보고 있는 클래스 C 네트워크 번호인 192.168.1.0에 대해 여러분들은 몇개의 서브넷 옵션을 지정할 수 있다.


  No of         No of
subnets Hosts/net netmask
2 126 255.255.255.128 (11111111.11111111.11111111.10000000)
4 62 255.255.255.192 (11111111.11111111.11111111.11000000)
8 30 255.255.255.224 (11111111.11111111.11111111.11100000)
16 14 255.255.255.240 (11111111.11111111.11111111.11110000)
32 6 255.255.255.248 (11111111.11111111.11111111.11111000)
64 2 255.255.255.252 (11111111.11111111.11111111.11111100)

이론적으로, 위에서처럼 서브넷을 만들때 반드시 네트워크 마스크 비트를 가장 중요한 호스트 비트에서 가장 덜 중요한 호스트 비트순으로 더할 필요는 없다. 그러나 만일 여러분이 이 방법을 사용하지 않는다면 만들어진 IP 번호는 매우 이상한 순서가 될 것이다. 이 경우 2진수에 익숙치 않는 우리들 로써는 IP 번호가 어떤 서브넷에 속해있는지 알기가 매우 어려워진다. (반면 컴퓨터는 여러분이 어떤 방법을 사용했는지 상관없이 잘 이해할 것이다) 적절한 네트마스크를 결정했다면 이제 여러분은 네트워크 주소와 브로드캐스트 주소와 각각의 네트워크의 IP 번호의 범위를 알아야 한다. 다시 한번 말하지만 이 예제에서는 클래스 C IP 네트워크 번호만을 고려하고 최종 호스트 번호만을 보여주도록 하겠다.

  Netmask     Subnets Network B'cast  MinIP   MaxIP   Hosts  Total Hosts
---------------------------------------------------------------------------------------
128 2 0 127 1 126 126
128 255 129 254 126 252

192 4 0 63 1 62 62
64 127 65 126 62
128 191 129 190 62
192 255 193 254 62 248

224 8 0 31 1 30 30
32 63 33 62 30
64 95 65 94 30
96 127 97 126 30
128 159 129 158 30
160 191 161 190 30
192 223 193 222 30
224 255 225 254 30 240

위에서 보이는 것처멈 이들 숫자에는 명백한 순서가 존재하기 때문에 확인하기가 매우 쉽다. 서브네트워킹의 아래쪽은 서브넷의 숫자가 증가함에 따라 사용가능한 호스트 주소의 전체 숫자가 감소한다는 사실을 보여준다. 이 정보로부터 이제 여러분들은 호스트와 네트워크 IP 번호 그리고 네트워크마스크 를 할당할 수 있게 되었다.

7. 라우팅

만일 여러분이 두개의 네트워크 인터페이스를 가진 리눅스 PC를 두개(혹은 그 이상) 의 서브넷을 라우트하기 위해 사용한다면 커널에서 IP 포워딩(IP Forwarding)이 가능하도록 해야한다.


          cat /proc/ksyms | grep ip_forward

이런 내용을 보게 될 것이다.
          00141364 ip_forward_Rf71ac834

만일 이런 메시지가 나타나지 않는다면 여러분의 커널은 IP 포워딩이 되도록 설정 되지 않은 것이므로 커널을 재컴파일 한 후 새로운 커널을 설치해야 한다. 이 예제를 위해 클래스 C IP 네트워크 번호 192.168.1.0을 4개의 서브넷으로 나누는 것으로 가정한다.(각각은 62개의 사용가능한 인터페이스/호스트 IP 번호를 갖게 된다). 그러나 이들 서브넷중 두개는 좀 더 큰 하나의 네트워크 를 구성하도록 결합될 것이므로 결과적으로 세개의 실제적인 네트워크가 존재하게 된다. 즉
  네트워크              브로드캐스트         네트마스크                    호스트 갯수
192.168.1.0 192.168.1.63 255.255.255.192 62
192.168.1.64 192.168.1.127 255.255.255.192 62
192.168.1.128 192.168.1.255 255.255.255.128 124 (see note)

참고: 마지막 네트워크가 124개의 사용가능한 네트워크 주소만을 가지는 이유는(네트워크 마스크로부터 예상할 수 있는 126개가 아닌) 이것이 두개의 서브넷에 대한 '수퍼 넷'이기 때문이다. 다른 두개의 네트워크에 있는 호스트들은 192.168.1.192를 '존재하지 않는' 서브넷의 네트워크 주소로 해석할 것이다. 이와 유사하게 192.168.1.191 역시 '존재하지 않는' 서브넷의 브로드캐스트 주소로 해석할 것이다.

그러므로 만일 여러분이 192.168.1.191나 192를 네트워크의 호스트 주소로 사용한다면 이 더 작은 두개의 네트워크에 존재하는 머신들은 이들과 통신할 수 없을 것이다. 이것은 서브넷의 중요한 한가지 사실을 설명해 준다. 즉 사용가능한 주소는 그 주소 공간의 가장 작은 서브넷에 의해 결정된다는 것이다.

  • 7.1 라우팅 테이블

이제 리눅스가 동작하는 컴퓨터가 이 네트워크의 라우터로 동작한다고 가정 해보자. 이 컴퓨터는 로컬 랜에 대해 3개의 네트워크 인터페이스를 가지고 있고 아마도 네번째 인터페이스를 통해 인터넷에 연결되어 있을 것이다. (이 인터페이스가 '기본 라우트'일 것이다.) 이제 리눅스 컴퓨터가 각각의 서브넷에서 가장 낮은 IP 주소를 인터페이스에 사용한다고 가정한다. 이제 네트워크 인터페이스는 다음과 같이 설정되었을 것이다.


  인터페이스      IP 주소                넷마스크
eth0 192.168.1.1 255.255.255.192
eth1 192.168.1.65 255.255.255.192
eth2 192.168.1.129 255.255.255.128

이것에 대한 라우팅은 다음과 같을 것이다.

  목적지 주소           게이트웨이      Genmask                 인터페이스
192.168.1.0 0.0.0.0 255.255.255.192 eth0
192.168.1.64 0.0.0.0 255.255.255.192 eth1
192.168.1.128 0.0.0.0 255.255.255.128 eth2

각각의 서브넷에 대해 호스트는 자신의 IP 번호와 네트워크 마스크로 설정 되어 있을 것이다.(특별한 네트워크에 적합하도록) 각각의 호스트는 네트워크의 인터페이스에 리눅스 PC의 IP 주소를 지정함으로써, 리눅스 컴퓨터를 자신의 게이트웨이/라우터로 선언한다.

Robert Hart Melbourne, Australia March 1997.