네트워크란 두 대 이상의 정보 단말기가 연결을 이루기 위해서 쓰이는 기기, 선로 등으로 구성되는 일체의 전송 매체
네트워크의 물리적 구성 요소
1.정보단말기는 네트워크를 사용하는 실질적인 주체로서 다른 말로 호스트라고 한다 (ex:pc, server, pda...)
2.NIC는 데이터를 직접 송수신하는 장치이다 대표적인 예로 랜카드가 있다
3.중계기(리피터)는 잡음 등으로 인해 약해진 신호를 원래의 비트로 재생하는 역할을 수행한다
이렇게 중계기에 의해 연결된 네트워크는 두개의 네트워크가 아니라 확장된것이다
4.브리지는 규모가 큰 네트워크를 좀더 작은 단위인 세그먼트로 분리할때 사용된다
브리지는 각 세그먼트간의 프레임을 필터링할 수 있기 때문에 혼잡 제어를 수행하고 문제가 발생한 세그먼트를 격리하는 역할을 수행한다
장점:필요한 곳으로만 프레임을 전송하기 때문에 네트워크 트래픽이 감소하고 보안성도 증가하게 된다
5.라우터는 IP를 이용해서 데이터를 최적의 경로로 찾아가게 하는 장치이다
라우터는 네트워크와 네트워크를 연결할때 사용되는데 라우터의 역할은 단순히 네트워크만 연결하는 것이 아니라 특정한 네트워크의 단말기가 다른 네트워크로 패킷을 전송하고자 할때 패킷이 전송될 최적의 경로를 판단해서 패킷을 중계하는 역할도 담당한다
패킷의 목적지 IP주소를 보고 가장 최단 경로로 패킷을 중계하는 역할을 담당한다
6.게이트웨이는 프로토콜 변환기 라고도 하는데 서로 다른 프로토콜을 사용하는 네트워크를 연결할때 사용하기 때문이다
게이트웨이는 기본적으로 라우터의 기능을 포함하고 있으며 거기에 추가적으로 각 네트워크에서 사용되는 프로토콜이 다르면 프로토콜을 변환하는 역할까지 담당한다.
게이트웨이는 내부에 있는 여러 프로토콜 스택을 사용해서 패킷을 서로 다른 프로토콜로 변경할수 있다.
인터넷의 주소체계
IP 주소 형식 32비트로 이루어 진다
xxx.xxx.xxx.xxx
네트워크 주소와 호스트 주소
IP주소 내부에 특정 네트워크를 지칭하는 네트워크 주소와 특정네트워크내에 어떤 컴퓨터를 지칭하는 호스트 주소로 이루어져있다
서브넷 마스크는 IP에서 어디까지가 네트워크 주소인지 어디까지가 호스트 주소인지 나타내준다
네트워크 주소를 구하는 방법: 서브넷 마스크와 IP를 AND연산하면 된다.
네트워크 주소는 패킷이 해당 네트워크로 찾아가기 위한 주소로써 인터넷 내에서 네트워크를 구분해주는 주소이며 호스트 주소는 해당 네트워크 내에서 해당 컴퓨터를 구분해주는 주소이다
클래스 기반 주소 지정
IP주소 클래스 대역
1바이트 | 1바이트 | 1바이트 | 1바이트 | ||
클래스 A | 네트워크 ID | 호스트 ID | 1~127 | ||
클래스 B | 네트워크 ID | 호스트 ID | 128~191 | ||
클래스 C | 네트워크 ID | 호스트 ID | 192~223 | ||
클래스 D | 멀티캐스트 주소 | 224~239 | |||
클래스 E | 예약되어 있음 | 240~255 |
클래스A
최상위 비트가 0으로 시작하고 상위 1바이트가 네트워크 주소이며 3바이트가 호스트 주소인 IP클래스 대역
클래스B
최상위 비트가 10으로 시작하는 IP주소로서 상위 2바이트가 네트워크 주소이고 하위 2바이트가 호스트주소
클래스C
최상위 비트가 110으로 시작하는 IP주소 상위3바이트가 네트워크 주소이고 하위 1바이트가 호스트주소
클래스D와E
클래스D는 나중에 E는 IP주소가 부족해졌을 때를 대비해서 예약되어 있는 클래스
클래스별로 나누는 이유는 여러 크기의 네트워크를 나눔으로써 필요에 맞게 할당해 주기 위해서이다
DNS
DNS는 숫자로 표현되는 IP주소에 대해서 각각 도메인명을 할당해주고 사용자가 도메인명으로 다른 호스트에 접속하고자 할 때 IP 주소를 알려주는 서비스다
포트
포트는 컴퓨터로 들어오는 문이다 컴퓨터에는 0부터 65535개의 포트가 존재
IP주소는 인터넷 내에서 특정 호스트를 유일하게 구분시켜 준다. 따라서 데이터를 전송하는데는 무리가 없다
그러나 데이터를 전송할 호스트 내의 어떤 프로세스에게 데이터를 넘겨줄지 정해지지 않았기때문에 포트번호가 필요하다
포트 주소는 어떤 프로세스에게 데이터를 넘겨줄지를 결정한다
프로토콜
네트워크상에서 지켜야할 약속이다
프로토콜종류
ARP
IP주소를 물리주소로 변환하기 위해 사용되는 프로토콜
ICMP
네트워크 내에 발생 할 수 있는 여러 가지 문제를 제어하기 위한 프로토콜이다 (ex>ping)
IGMP
멀티캐스트를 위해 존재하는 프로토콜, 멀티캐스트란 하나의 발신지 호스트와 여러 수신지 호스트가 통신하는 방식
IP 프로토콜은 1:N으로 표현되는 이러한 방식을 지원한다.
TCP/IP
IP는 신뢰성이 없고 비연결 지향적이며 목적지까지 패킷을 전달하기 위해 최선을 다한다
그러나 그 전달 과정에 문제가 발생할 수 있다는 것을 가정하고 목적지까지 전달하기 때문에 결과는 보장할수 없다
VER 4Bits |
HLEN 4Bits |
Service Type 8Bits |
Total length 16Bits | |
Identification 16Bits |
Flags 3Bits |
Fragmentation offset 13Bits | ||
Time to live 8Bits |
Protocol 8Bits |
Header Checksum 16Bits | ||
source IP Address | ||||
Destination IP Address | ||||
Options | ||||
DATA |
VER(버전)
버전을 나타내는 필드 IPv4는 4가 들어가고 IPv6이면 6이들어가는데 지금은 거의 4이다
HLEN(헤더 길이)
IP의 헤더 길이를 나타내는 필드이다 이 옵션에 따라 20~60바이트로 가변적이다 만약 20바이트라면 20/4=5 이기 때문에 5로 설정된다
Service Type(서비스 종류)
이부분은 각 비트가 패킷의 중요도와 우선순위를 표기하고 있어서 이 패킷이 얼마나 중요한 패킷인지 우선권은 얼마인지 등을 나타내는 부분이다
Total length(전체 길이)
헤더와 데이터 길이를 포함한 전체 길이를 바이트 단위로 나타낸다 16비트크기이기때문에 65535바이트까지 표현할수 있지만 네트워크 물리적 NIC에 의해 제한 받는다 참고적으로 물리매체에 따라 최대로 보낼 수 있는 데이터그램 크기를 MTU라 부르는데 각 물리매체에 따라 다르다
Identification(식별자)
각각의 IP패킷을 유일하게 구분해 준다 패킷이 단편화 되었을때 사용되는 부분으로써 어떤 원본 패킷의 일부임을 나타내는지를 알리는 부분이기도 한다
Flags(플래그)
단편화 할수 있는지 없는지를 나타낸다
Fragmentation offset(단편화 오프셋)
단편화되었을때 단편화 순서를 설정하는 부분이다 단편화는 데이터 시작 부분의 값에 8을 나눈 값이다
Time to live(수명)
패킷이 네트워크 내에서 영원히 떠돌아 다니지 않도록 하기 위한 필드다 처음 발신지 호스트에서 패킷을 생성하게 되면 운영체제에따라 TTL값을 255또는 128로 설정하게된다 이 값이 라우터 또는 호스트를 하나씩 지나갈때마다 1씩 감소한다 만약 0이 되었다면 해당 패킷을 받은 라우터는 패킷을 버리고 발신지 호스트에 ICMP패킷을 보내준다
Protocal(프로토콜)
IP패킷이 담고 있는 데이터가 어떤 프로토콜인지 나타내는 필드다,내부데이터에 다른 프로토콜을 담고 있는데 어떤프로토콜을 담고 있는지 명시하는 부분이 바로 Protocol필드다.
Header checksum(헤더 체크섬)
IP패킷의 해더가 정상적인지 검사하는데 사용되는 체크섬 값이 설정된 필드다
0이면 정상 아니면 0이 나오지 않는다
Source IP address와 Destination IP Address
발신지와 목적지 IP를 넣는곳이다
TCP
신뢰성이 있는 통신을 제공하기 위한 프로토콜이다
특징
TCP는 연결지향적 프로토콜로 접속이 이루어졌을때 데이터를 전송하게 된다
TCP가 전송하는 데이터는 스트림으로 순차성이 있다 TCP에 의해 순서가 매겨지기 때문에 나중에 도착하여도 순서에 맞게 재 조합된다
TCP는 흐름 제어를 수행한다 TCP는 버퍼가 넘치는것을 방지하기 위해 슬라이딩 윈도우 라는 방식을 이용해서 송수신지가 버퍼의 크기를 가변적으로 조절하며 흐름제어를 수행, 최대한 빠르면서도 안전한 전송이 될수 있게 한다
TCP는 오류 제어를 수행한다
TCP는 TCP헤더에 있는 체크섬 값을 이용해서 TCP 패킷이 이상 없이 전송되었는지 확인한다 이상없으면 송신지로 확인 메시지를, 이상이 발생했으면 버리고 확인메시지를 보내지 않는다 만약 확인메시지를 송신자가 받지 못하면 패킷을 재전송한다.
TCP는 프로세스간의 네트워크 자원에 대한 다중화를 실현한다.
TCP는 포트번호를 이용해서 각각의 프로세스에게서 송수신되는 패킷을 구별해서 나누어준다.
TCP는 전이중 서비스다.(양방향)
Source Port Address 16Bits |
Destination Port Address 16Bits | |||||||
Sequence number 32Bits | ||||||||
Acknowledgment number 32Bits | ||||||||
HLEN 4Bits |
Reserved 6Bits |
U |
A |
P |
R |
S |
F |
Windows Size 16Bits |
Checksum 16Bits |
Urgent Pointer 16Bits | |||||||
Options and Padding | ||||||||
Application DATA |
Source Port Address(발신지 포트 주소)
발신지 호스트의 애플리케이션의 포트 주소를 적는 부분이다
Destination Port Address(목적지 포트 주소)
목적지 호스트의 애플리케이션을 적는 곳이다
Sequence number(순서 번호)
순서 번호는 전달하고자 하는 스트림의 순서 번호를 나타내는 값이다
Acknowledgement number(확인 응답 번호)
확인 응답 번호는 수신지에서TCP세그먼트를 받고 제대로 왔다면 발신지에게 제대로 왔다는 것을 알려주기 위한 번호다(오류제어를 하는데 사용)
HLEN(헤더 길이)
IP의 헤더와 같다
Reserved(예약)
향후 사용을 위해 예약 되어 있는 필드
제어 플래그(U,A,P,R,S,F)
흐름제어와 연결 설정 및 종료를 위해 사용되는 비트들이다
U: Urgent 항목의 포인터가 유효함
A:확인 응답 번호가 유효함
P:해당 세그먼트의 데이터는 애플리케이션에게 즉시 전달되어야 함
R:연결을 재설정하거나 유효하지 않은 세그먼트에 대한 응답으로 사용됨
S:연결 설정 요구를 나타내며 반드시 승인되어져야 함
F:한쪽 끝에서 유발되는 연결의 종료와 일정 방향으로의 데이터 흐름의 끝을 나타냄
Window size(윈도우 크기)
송수신지의 버퍼의 크기를 나타내는 필드
Checksum(체크섬)
IP와 마찬가지로 헤더와 데이터가 이상없이 제대로 전송되었는지 확인할 때 비교가 되는 값
Urgent Pointer(긴급 포인터)
이 필드는 URG제어 비트가 설정된 긴급 상황에서 사용되는 필드, 만약 송신지에서 세그먼트를 보내고 있는데 수신지로부터의 응답이 잘못되었거나 기타 다른 이유로 무엇인가 이상이 발견되면 긴급 데이터를 실은 세그먼트를 수신지로 보낸다.
Options and Padding(옵션과 패딩)
TCP는 최대 40바이트까지의 옵션을 가질 수 있는데, 만약 옵션을 가진다면 옵션이 들어가는 필드다
Application DATA
애클리케이션의 데이터가 들어가는 부분이다
[출처] 네트워크(프로토콜+구성요소+TCP/IP)|작성자 대승이