UTP 케이블에 관련된 포스트
http://ryusstory.tistory.com/4
SC와 LC 케이블 정도는 당연히 구분할 줄 알아야 할거 같습니다.
위의 사진이 LC, 아래 사진이 SC, 걸림쇠라고 해야하나 튀어나온것이 있는게 LC이고, 순수한 사각형모양의 케이블이 SC입니다.
SC는 Subscriber Connector, square connector, Standard Connector 정도로 불리고
LC는 Lucent Connector, Little Connector, Local Connector 정도로 불린다고 하네요.
http://en.wikipedia.org/wiki/Optical_fiber_connector
OSI 7 layer
http://ryusstory.tistory.com/26
데이터를 전송하게 되면 상위 계층에서 하위 계층으로 보내게 되는데
각 계층을 지나오면서 Header 와 Trailer가 붙게 됩니다. 헤더에는 각 계층에 해당되는 정보가 추가되고, 트레일러는 꼬리표라고 생각하시면 됩니다.
그리고 하위 계층으로 내려오면서 헤더를 더하는 것을 Encapsulation(인캡슐레이션)이라고 합니다.
반대로 상위 계층으로 올라가면서 헤더의 정보를 확인하면서 제거하는 것을 Decapsulation(디캡슐레이션)이라고 합니다.
그리고 다시 OSI로 돌아가서 Layer 2에서 붙는 헤더를 보면
Layer-1 은 bit (비트) Layer-2 는 Frame (프레임) Layer-3 는 Packet (패킷) Layer-4 는 Segment (세그먼트) Layer-5 ~ Layer-7은 Data (데이터)
이렇게 각 레이어 별로 부르는 방법이 다 다릅니다. 흔히 그냥 패킷이라고 말하지만 프레임이나 세그먼트를 지칭할때 이것이 어느 레이어를 말하는 건지는 알 수 있는게 좋습니다. 프레임과 패킷 정도는 확실히 L2 / L3 라는 걸 기억하시는 게 좋습니다.
|
우측에서 두번째에 DATA가 보이시죠? 저곳이 실제로 Data가 들어가는 위치입니다.
Preamble은 준비~ 라고 생각하시면 됩니다. ( 1010 1010 ) 이런 방식으로 8bit 씩 7번(7byte)가 전송되는 부분입니다.
SFD는 Start Frame Delimiter 라고 해서 시작 구분 기호 ( 1010 1011 ) 로 데이터의 시작을 알리게 됩니다.
이 두 가지를 정리해서 달리기 출발할 때를 생각해보면
준비~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 땅!
10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011
이와 같은 식으로 데이터 전송의 시작을 알려주는 것입니다. 잡신호와 데이터를 구분하기 위해 있는 것이라고 생각하시면 됩니다.
세번째 칸으로 넘어가기 전에 맥 주소에 대해 잠깐 알아보고 넘어가겠습니다.
MAC 주소는 Media Access Control address (매체 접근 제어 주소...)라고 하는데 L2 주소 / 맥주소 / 물리주소 / 하드웨어 주소 정도로 부르기도 합니다. 컴퓨터를 예로 들면 컴퓨터에 달려있는 랜카드를 NIC card라고 하는데 이곳에 MAC 주소가 박혀있습니다. 게다가 MAC 주소는 고유의 값입니다. 각 네트워크 장비에도 전부 MAC 주소가 있고 스위치에는 포트별로 mac 주소가 다 다릅니다.
AA:AA:AA:BB:BB:BB
mac주소는 숫자가 아닌 16진수로 된 값으로 위와같이 나타내는데 앞의 세칸 AA:AA:AA 는 장비 제조사 입니다. 앞의 세 칸을 통해서 이 장비가 cisco 장비인지 asus 등의 업체를 알아낼 수 있습니다. ( IEEE 에서 지정 ) 뒤의 BB:BB:BB 는 제조사에서 임의로 붙이는 일련번호라고 생각하시면 됩니다. 그렇기 때문에 MAC 주소는 중복되지 않습니다. |
Destination MAC address : 목적지 MAC 주소입니다.
Source MAC address : 출발지 MAC 주소입니다.
데이터를 보낼때 목적지의 주소가 더 중요하므로 목적지 주소가 먼저 나온다고 생각해두시면 좋습니다.
Length : 프레임의 총 길이
Type : Data에 들어있는 상위 프로토콜을 알려줍니다. 0x0600 이상의 값만이 가능하다고 하고 아래는 대표적인 값들입니다.
. 0600h Xerox XNS IDP
. 0800h IP
. 0805 X.25
. 0806h ARP
. 0835h RARP
. 8137h Novell Netware IPX
. 8847h MPLS
. 8191h NetBIOS
Data Payload : 실제적인 데이터가 들어가는 부분입니다. 3-1500 bytes의 데이터가 들어갈 수 있습니다.
Pad : 약간 복잡 할 수 있습니다. 잘 이해하셔야 합니다.
실제적으로 전송될 때 이더넷의 프레임 크기는 64-1500 bytes 로 지정되어 있습니다.
그런데 시작을 알리는 preamble과 SFD를 제외하면 헤더는 18 bytes 로 구성되어 있습니다.
그렇다면 Data/Pad 필드에는 최소 48 bytes (64 - 18 bytes) 의 데이터가 들어가야 합니다.
그런데 실제 데이터가 48 bytes보다 적다면 PAD 필드를 통해서 프레임을 최소 전송크기에 맞게 맞춰주는 것입니다.
큰 상자에 물건을 넣었는데 남는 공간이 너무 많아서 신문지나 뾱뾱이를 채워 넣는 것이 PAD라고 생각하시면 됩니다.
FCS: Frame Check Sequence 여기는 CRC(Cycle Redundancy Check)를 통해 데이터의 무결성을 검사하는 부분입니다. 데이터가 조금이라도 변경되면 CRC 값이 맞지 않게 되고 해당 데이터는 잘못된 데이터로 분류되어 버리거나 재전송 요청을 하게 됩니다.
자 이제 Layer-3의 패킷 구조입니다. 더 복잡하지만 하나하나 보면 별거 아닐수도 있습니다.
Version : 4-bit 의 크기로 이 패킷의 버전을 알려주는 부분입니다. 현재 버전은 4 ( 0x0100 ) 가 사용되고 있고, 대부분의 패킷에 버전이 4로 쓰일 것입니다.
IP Version |
Description |
0 | Reserved |
1-3 | Unassigned |
4 | IP Version 4 |
5 | Stream IP Datagram mode (experimental protocol) |
6 | IP Version 6 |
7 | TP/IX |
8 | The "P" internet protocol |
9 | TUBA |
10-14 | Unassigned |
15 | Reserved |
IHL : Internet Header Length 로 4-bit 필드로 패킷 헤더 길이를 나타냅니다. 확실하지 않아서 영문 내용을 첨부합니다.
IHL (Internet Header Length): This 4-bit field gives length of the Internet Protocol (IPv4) header in 32-bit words. The minimum length of an Internet Protocol (IPv4) header is five 32-bit words. The header bit pattern is 0101.
Type Of Service : ToS라고도 불리며 Quality Of Service (QoS)에 관련된 부분이므로 알려고 하시면 복잡해 집니다.
따로 정의하도록 하겠습니다.
Total Length : 총 길이를 말해주는 필드입니다. 크기는 20 - 65535 bytes의 사이즈가 될 수 있으며, 20 bytes의 경우에는 IP
Identification : 데이터를 조각내서 (분할해서) 보내게 되었을때 조각(fragments) 들을 조합할때 사용하는 필드입니다.
Flags : 3-bit의 길이로 되어있는 필드로
| X | DF | MF |
위와 같이 세개의 bit로 구성되어 있다.
첫번째 비트는 예약된 비트.
DF = Don't Fragment ( bit 값이 1 일때 )
MF = More Fragment ( bit 값이 1 일때 )
Fragment Offset : Fragment 되었을때 실제적인 패킷이 어디 있는 지를 알려주는 필드로 일단은 넘어가겠습니다.
TTL : Time to Live 8bit 필드로 일반적으로 라우터 hop을 지날때마다 1씩 감소시키게 됩니다. TTL 값이 0이 된 패킷을 수신하면 라우터는 해당 패킷을 버리게 됩니다. ( Layer-3의 Looping 방지)
Protocol : 상위 계층의 프로토콜을 명시한 필드
Header Checksum : 헤더에 대한 무결성을 체크하는 부분으로 TTL 값이 1감소할때마다 새로 계산되어진다.
Source IP Address : 송신지 IP 주소
Destination IP Address : 수신지 IP 주소
IP Option : 패스
Padding : 앞에서 설명한 것과 같음.
IP Option 과 Padding 은 헤더에 따라서 들어갈 수도 있고 안들어갈 수도 있다.
Data : 데이터가 실제적으로 들어가는 부분
Source Port : 송신포트
Destination Port : 수신 포트
Sequence Number : 32-bit의 필드로 패킷의 순서를 알려주는 필드라고 보면됩니다.
예를들어 sequence number가 50000 이라고 치고 패킷의 크기가 500 bytes 라고 한다면 다음패킷의 sequence number는 50501이 되게 됩니다. ( 50000 + 500 + 1 ). 패킷을 송신할 때마다 1을 증가시키게 됩니다.
Acknowledgment Number : 송신자가 다음 보내야할 Sequence Number를 알려주는데 사용합니다. 수신한 패킷의 Sequence Number에 1을 더해서 패킷을 잘 받았다는 것을 알려주게 됩니다.
Header Length : 4 bits의 길이로 헤더의 길이를 알려주게 됩니다. 기본적으로 옵션이 부가되지 않을 경우 20 bytes 가 헤더길이로 적용되는데 이를 4로 나눠서 헤더길이가 20 bytes라면 5 가 들어가게 됩니다. ( 20 / 5 = 4 )
Reserved : 예약 필드
Flags : 패킷을 어떻게 처리해야 할지 등의 제어정보를 담은 값입니다.
URG : Urgent 긴급이라는 말로 데이터를 처리할때 최우선으로 처리하게 하는 제어 플래그입니다. ACK : Acknowledgment 알겠다는 소리입니다. 1이면 ACK Number가 유효. 0이면 확인번호가 무시됩니다. RST : Reset 이 비트가 유효하게 되면 (1로 셋팅되면 ) TCP 연결을 즉시 종료시킵니다. RST는 비정상적인 종료에 가깝고. FIN은 정상적인 종료이라고 보시면됩니다. 또 하나 예를 들면 A와 B 양측이 서로 데이터를 전송중일 때, A측에서 FIN 을 보내더라도 B측에서는 데이터를 끝까지 다 전송한 뒤 FIN을 보내어 서로간 합의하에 정상적으로 통신을 종료하게 됩니다.
|
Window : Receive Window 의 크기를 말하는 것으로 수신가능한 데이터의 사이즈라고 생각하시면 될거 같습니다. 서로간의 전송 속도가 다를 때 이 값을 통해서 적절하게 전송속도를 조절하는 것으로 알고 있습니다.
송신측의 전송속도가 더 빠를 때 수신측에서 받을 수 있는 (처리할 수 있는 ) 사이즈를 상대방에게 알려주어 데이터가 넘쳐서 들어오지 않도록 함.
Checksum : 데이터를 무결성을 체크하는 필드입니다.
Urgent Pointer : URG flag가 설정되었을 때 긴급적으로 처리해야할 데이터의 Sequence Number를 가리킵니다. ( 확실하지 않음 )
Option / Data : 다른 헤더와 같다고 보면됩니다. TCP option은 차후에.......
마지막으로 간단하게 정리하면 위와 같은 그림처럼 생각하시면 됩니다.
| L2 Header | L3 Header | L4 Header | Data |
전체적인 데이터는 결국 이런 방식으로 쌓여있습니다.
Encapsulation 이라고 한다면 데이터를 각 계층에 맞게 헤더를 붙이는 것으로
....................................| Data |
........................| L4 Header | Data |
............| L3 Header | L4 Header | Data |
| L2 Header | L3 Header | L4 Header | Data |
이런식으로 아래 계층으로 헤더가 붙게 되며
Decapsulation은 반대로 낮은 계층의 헤더부터 제거하여 마지막에 데이터를 확인하게 됩니다.
| L2 Header | L3 Header | L4 Header | Data |
............| L3 Header | L4 Header | Data |
........................| L4 Header | Data |
....................................| Data |
그리고 각 장비는 각 계층까지 헤더를 Decapsulation 해서 확인하고 다시 Encapsulation 한다는 정도와
각 계층에서 쓰이는 주소 Layer-2는 MAC / Layer-3는 IP / Layer-4는 Port
이 정도가 가장 중요할 거 같습니다. 패킷의 구조를 외우면 분명 좋은 곳에 쓰일 거 같긴 하지만 그렇지 않더라도 각 필드를 보고 어떤 메세지인지 구분할 정도로만 봐도 될거 같습니다.