통신의 이해 – 이더넷 통신
1. 시리얼 통신
- 케이블 결선
- RS232/485 컨버터의 사용
- DTE 와 DCE
- RS-232C(EIA-232C 또는 RS-232)의 통신 규격
- RS-422(또는 EIA-422)의 통신 규격
- RS-485(또는 EIA-485) 의 통신 규격
2. 이더넷 통신
- TCP/IP 의 구조
- UDP(User Datagram Protocol)란?
- TCP(Transmission Control Protocol) 란?
- IP(Internet Protocol) 란?
- IP 주소의 이해
- TCP/IP 의 설치와 환경 설정
- TCP/IP 테스트
3. 시스템 통신 규약
4. OSI 참조모델의 계층별 이해
2. 이더넷 통신
이더넷(Ethernet)은 1976 년 제록스 사의 멧캘프(Metcalfe)와 보그(Boggs)에 의해 개발된
네트워크 시스템이다. 이 시스템을 간단하게 설명하면, 각 국(station)을 동축 케이블을 사
용하여 연결하고, 맨체스터 코딩 방식을 사용하며 속도는 10Mbps 정도인 고속 네트워크
방식이다. 주로 고속의 근거리 통신망(LAN, Local Area Network)에 사용되며 케이블의 길
이는 약 2.5km 까지 연장될 수 있다. 이더넷 네트워크 통신에 대한 내용은 매우 방대하다.
그래서 이 지면에서 다 설명하기는 어려울 것 같다. 대신 가장 많이 사용하는 TCP/IP 를
중심으로 설명하도록 하겠다.
TCP/IP(Transmission Control Protocol/Internet Protocol)는 WAN(Wide Area Network) 시스
템을 위하여 설계된 산업 표준 프로토콜이다. 원래 이 프로토콜은 미국방성에서 구축한 전
산망인 아르파넷(ARPANET)의 전송 계층에서 사용되는 이름이었는데, 현재 대부분의 네트
워크 시스템에서 기본 프로토콜로 가장 많이 사용되고 있으며, 인터넷 또는 다른 시스템의
연결을 위해서도 사용된다. 이 프로토콜은 이더넷 카드와 케이블을 통하여 데이터를 전송
하며, NetBEUI 와 같은 다른 네트워크 프로토콜과도 같이 사용할 수 있다.
TCP/IP의 구조
TCP/IP 의 기본 구조는 <그림 6>과 같다. TCP/IP 는 말 그대로 두 부분으로 구성되어 있
는 것임을 알 수 있으며, <그림 6>에 그것이 잘 나타나 있다. 그것은 응용 프로그램 계층
에서 인터페이스를 위한 TCP 또는 UDP 와 하드웨어 계층에서 인터페이스를 위한
ICMP/IP/ARP/RARP 등이 그것이다. 이 중에서 우리는 TCP, UDP, IP 에 대한 내용을 들어
보았지만 그 외의 프로토콜을 들어보지 못했을 것이다. 따라서 여기서도 TCP, UDP, IP 에
대해서만 설명하도록 한다.
< 그림 6. TCP/IP 기본 구조 >
UDP(User Datagram Protocol)란?
TCP/IP 환경에서 UDP 는 한 응용 프로그램에서 다른 응용 프로그램으로 데이터그램을 전
송하는 기본적인 메커니즘을 제공한다. 또한, UDP 는 한 호스트 안에서 돌아가는 응용 프
로그램들을 구분하는데 쓰이는 프로토콜 포트를 제공한다. 이는 한 호스트 안의 응용 프로
그램이 다른 호스트 안의 특정 응용 프로그램이 데이터를 전송할 수 있게 해 준다.
그런데 UDP 는 신뢰성이 보장되지 않고(unreliable), 비연결적인 데이터그램 전송 구조를 제
공하기 때문에, UDP 메시지는 손실되거나 중복될 수 있으며, 순서가 뒤바뀌어 도착할 수도
있다. 그리고 패킷들이 수신자가 처리할 수 있는 양보다 더 빨리 도착할 수 있다.
각각의 UDP 메시지는 유저 데이터그램이라고 불리며, 개념적으로 하나의 유저 데이터그램
은 UDP 헤더와 UDP 데이터의 두 부분으로 구성된다. <그림 7>은 UDP 의 메시지 형식을
나타낸다. UDP 의 헤더는 그림에서 보듯이 메시지가 보내진 포트, 메시지의 목적 포트, 메
시지 길이 그리고 UDP 체크섬 정보를 가지고 있는 4 개의 16 비트 필드로 구성된다.
< 그림 7. UDP 메시지 형식 >
TCP(Transmission Control Protocol) 란?
TCP 는 인터넷 프로토콜에서 신뢰성이 보장되는 데이터 전송 서비스를 지원하기 위한 프로
토콜이다. 이 프로토콜은 신뢰성 있는 전송을 수행하기 위해 두 호스트가 교환하는 데이터
와 승인 메시지의 형식을 정의한다. 또, 어떻게 TCP 소프트웨어가 주어진 호스트의 여러
가지 목적지 가운데서 하나를 구별해 내며, 어떻게 전송 에러를 복구할 것인가를 정의한다.
또한 이 프로토콜은 두 호스트가 어떻게 TCP 흐름 전송을 초기화하고 이 초기화가 이루어
졌을 때 두 호스트가 어떻게 서로 승인하는지를 보여준다.
TCP 에서는 두 호스트 사이에서 전송되는 데이터의 단위를 세그먼트라고 부른다. 세그먼
트들은 연결을 시키거나, 데이터를 보내거나, 승인 메시지를 보내거나, 윈도 크기를 알리거
나 또는 연결을 끊을 때 양쪽 호스트들 사이에서 서로 교환된다. <그림 8>은 TCP 의 세그
먼트 형식을 보여 준다.
< 그림 8. TCP 세그먼트 형식 >
TCP 세그먼트의 헤더를 분석하면 다음과 같다.
- SOURCE PORT 와 DESTINATION 필드는 송신, 수신 호스트의 응용프로그램에 의해 정
의되는 TCP 포트 번호를 가진다.
- SEQUENCE NUMBER 필드는 세그먼트 내 데이터 송신 바이트 흐름(stream)의 위치를
가리킨다.
- ACKNOWLEDGMENT NUMBER 필드는 소스가 다음에 받을 것으로 예상되는 옥텟의 수
를 나타낸다.
- HLEN 필드는 세그멘트의 길이를 정의하는 정수를 가지고 있다.
- RESERVED 필드는 차후에 사용 되어지기 위해 예약된 필드이다.
- 6 비트의 CODE BITS 필드는 세그멘트의 용도와 내용을 결정하기 위해 쓰인다. 이 필드
가 URG 로 설정 되어 있을 때는 URGENT POINTER 필드가 설정된다.
IP(Internet Protocol) 란?
IP 프로토콜은 TCP/IP 인터넷을 통한 전송에 사용되는 데이터의 기본단위를 정의한다. IP 는
데이터가 보내질 경로를 선택하는 라우팅 기능을 수행한다. 물리적 네트워크와 TCP/IP 인
터넷 사이에는 유사한 점이 많다. 물리적 네트워크에서 전송단위는 헤더와 데이터부분을 가
지고 있는 하나의 프레임이다. 인터넷에서 사용되는 데이터 전송단위를 인터넷 데이터그램
이라고 부르며, IP 데이터그램 혹은 데이터그램이라고도 부른다.물리적 네트워크의 프레임과
같이 데이터그램은 헤더와 데이터부분으로 나뉜다. 또, 데이터그램 헤더는 송신지와 목적지
주소, 그리고 데이터그램의 내용을 나타내는 형식 필드를 가진다.데이터그램 헤더와 프레임
헤더의 차이는 전자는 IP 주소 정보를 가지고 있고, 후자는 물리적 네트워크 주소를 갖는다
는 점이다.
< 그림 9. IP 데이터그램 형식 >
<그림 9>는 IP 의 데이터그램 형식을 나타내며 각 필드의 기능은 다음과 같다.
- VERS 필드는 IP 프로토콜의 버전(현재는 4)을 나타낸다.
- HLEN 필드는 헤더의 길이는 나타내는 필드이다.
- TOTAL LENGTH 필드는 옥텟으로 계산된 IP 데이터그램의 전체 길이를 나타낸다.
- IDENTIFICATION 필드는 나누어진 프레그먼트들이 하나의 데이터그램이라는 것을 나타
내고 후에 프레그머트들을 재 조합할 때 사용된다.
- TIME TO LIVE(TTL) 필드는 이 데이터그램이 얼마동안 인터넷 시스템 안에서 머물 수
있는가를 나타낸다.
- PROTOCOL 필드는 어떤 상위 수준의 프로토콜이 사용되었는가를 나타낸다.
- HEADER CHECKSUM 필드는 헤더값의 무결성을 보장하기위해 쓰인다.
- SOURCE IP ADDRESS 와 DESTINATION IP ADDRESS 필드는 각각 송신 호스트와 수신
호스트의 IP 주소를 나타낸다.
- DATA 필드는 데이터그램내의 데이터부분의 시작지점을 알려준다.
- OPTION 필드와 PADDING 필드는 네트워크 테스트 또는 디버깅을 위해 쓰인다
IP 주소의 이해
TCP/IP 프로토콜은 윈도 운영 시스템에서 설정할 수 있으며, 그 설치는 다음과 같이 세 단
계로 구성된다.
- IP 주소 할당
- TCP/IP 설치와 환경 설정
- TCP/IP 통신 테스트
각각의 TCP/IP 호스트는 논리적인 IP 주소에 의해서 구분된다. TCP/IP 를 사용하여 통신하
는 호스트와 네트워크 구성 요소들은 고유한 IP 주소를 가져야 한다. 각각의 IP 주소는 네
개의 필드로 구성되며, 0 부터 255 까지의 번호를 사용할 수 있고, 마침표(.)로 구분된다.
IP 주소의 형식은 다음과 같다.
w.x.y.z
예를 들면, 131.107.3.24 처럼 쓸 수 있다.
각각의 주소는 네트워크 ID 와 호스트 ID 로 나뉘어진다. 네트워크 ID 는 같은 물리적인 네
트워크에 있는 TCP/IP 호스트를 구분한다. 주소의 계층은 아래와 같이 주소의 어느 비트
들이 네트워크 ID 로 사용될 것인지를 정의한다.
계층 IP 주소 네트워크 ID 호스트 ID
A w.x.y.z w x.y.z
B w.x.y.z w.x y.z
C w.x.y.z w.x.y z
각각의 호스트는 단일 세그먼트 네트워크라 할지라도 IP 주소외에 서브넷 마스크를 자여야
한다. 그 주소 형식은 IP 주소 형식과 동일하다. 서브넷 마스크는 호스트 ID 로부터 네트
워크 ID 를 구별하고, 호스트가 로컬인지 리모트인지 지정하기 위해서 사용된다.
TCP/IP 테스트
이더넷 통신을 하는 경우에는 Citect 으로 네트워크 통신을 하기 전에 반드시 TCP/IP 네트
워크 통신 테스트를 해봐야 한다. 이것으로 논리적인 오류를 찾을 수 있다. 가장 일반적
으로는 ‘PING’이라는 명령어가 사용된다. PING 은 TCP/IP 드라이버를 테스트하는데 사용
되는 유틸리티 이다. PING 명령은 MS-DOS 에서 실행된다. PING 테스트는 다음과 같이
한다.
1. 루프백 테스트
먼저 도스 창을 연다음, 예를 들어 ping 127.0.0.1 를 입력하고 엔터키를 누른다. 만약
ping 이 성공하면 다음과 같은 메시지가 표시된다
Pinging IP_address with 32 bytes of data:
Reply from IP_address: bytes=x time<10ms TTL=x
Reply from IP_address: bytes=x time<10ms TTL=x
Reply from IP_address: bytes=x time<10ms TTL=x
Reply from IP_address: bytes=x time<10ms TTL=x
2. 로컬 호스트 테스트
ping IP_address를 입력합니다. 여기서, IP_address 는 워크스테이션의 IP 주소이다. 만
약, ping 이 성공하면, 위와 비슷한 메시지가 표시된다.
3. 리모트 호스트 테스트
ping IP_address를 입력합니다. 여기서, IP_address 는 호스트의 IP 주소이다. (예를 들
면, PLC 의 IP 주소) 만약, ping 이 성공하면, 위와 비슷한 메시지가 표시됩니다.
위의 모든 단계의 테스트가 완료되면, 드라이버는 정상적으로 설치가 된 것입니다.