Chapter01 - 네트워크 이해
- 프로토콜
① 본래 의미는 외교에서 의례 또는 의정서
② 컴퓨터와 컴퓨터 사이에서 메시지를 전달하는 과정
- 프로토콜의 3가지 요소
① 구문(Syntax) :
l 데이터의 구조나 포맷을 의미
② 의미(Semantics) :
l 전송되는 데이터의 각 부분이 무엇을 뜻하는지를 알 수 있게 미리 정해 둔 규칙(데이터 자체 뿐만 아니라 오류 제어, 동기 제어, 흐름 제어를 포함)
③ 순서(Timing) :
l 어떤 데이터를 보낼 것인지와 얼마나 빠르게 데이터를 보낼 것인지 정의
- 프로토콜의 기능
① 주소 설정 :
l 서로 다른 시스템의 두 개체가 통신을 하는데 필요
② 순서 제어 :
l 프로토콜 데이터 단위를 전송할 때 보내는 순서를 명시하는 기능(연결 지향형에만 사용)
③ 데이터 대열의 단편화 및 재조함 :
l 대용량 파일을 전송할 때 전송 효율이 높은 작은 단위로 나누어 전송한 뒤 전송 받은 시스템에서 이를 재조합해야 함.
④ 캡슐화 :
l 데이터에 제어 정보를 덧붙이는 것
⑤ 연결 제어 :
l 연결 설정, 데이터 전송, 연결 해제에 대한 통제 수행
⑥ 흐름 제어 :
l 송신측 개체로부터 오는 데이터의 양이나 속도를 조절하는 기능
l 송신측과 수신측의 속도 차이 등으로 인한 정보 유실을 방지
⑦ 오류 제어
l 두 개체에서 데이터를 교환할 때 SDU나 PCI가 잘못되었을 경우, 이를 발견하는 기법
l 순서를 검사하거나 특정 시간 안에 받지 못하면 재전송을 요구하는 방식으로 이루어짐
⑧ 동기화
l 두 개체 간에 데이터를 전송할 때 각 개체는 특정 타이머 값이나 윈도우 크기 등을 통해 동시에 정의된 인자 값을 공유하는 것
⑨ 다중화
l 통신 선로 하나에서 여러 시스템을 동시에 통신할 수 있는 기법
⑩ 전송 서비스
l 우선순위 결정, 서비스 등급과 보안 요구 등을 제어하는 서비스
- OSI 7계층
① 물리 계층
l 실제 장치를 물리적으로 연결
l 장치 : 허브, 리피터
② 데이터 링크 계층
l 점대점 사이의 신뢰성 있는 전송을 보장하기 위한 계층
l CRC 기반의 오류 제어와 흐름 제어가 필요
l 장치 : 이더넷
③ 네트워크 계층
l 여러 노드를 거칠 때마다 경로를 찾아주는 역할
l 라우팅, 흐름제어, 단편화, 오류 제어 등을 수행
l 장치 : 라우터(스위치 – L3스위치 사용)
④ 전송 계층
l 데이터를 전송할 때 신뢰성(연결지향), 비신뢰성(비연결지향)을 결정하는 계층
l TCP – 연결지향, UDP – 비연결지향
⑤ 세션 계층
l 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법 제공
l 종료, 재시작 과정 등을 수행
l TCP/IP 세션을 만들고 없애는 책임을 짐
⑥ 표현 계층
l 사용자가 눈으로 볼 수 있게 만들어 줌
l 데이터 압축과 암호화 기능 수행
⑦ 응용 계층
l HTTP, FTP, 터미널 서비스, 메일 프로그램(SMTP), 디렉토리 서비스 제공
- OSI 7계층과 TCP/IP 프로토콜
- TCP/IP에서의 데이터 전달 과정
물리 계층에 대한 이해
- 시스템 간의 연결선(흔히 LAN선을 뜻함)
- 리피터
① 네트워크를 연장하기 위한 장비
② 불분명해진 신호 세기를 다시 증가시키는 역할
③ 최근에는 리피터가 모든 네트워크 장비에 공통으로 들어가는 기능이 됨
- 허브
① 요즘 쓰이는 스위치의 예전 형태
② 최근의 스위치를 스위칭 허브, 이전 허브를 더미 허브라 부름
③ 허브는 스위치와 형태나 사용 방법이 같지만 패킷을 모든 곳에 똑같이 복사해서 보내는 것이 다름(스위치는 목적지에만 데이터를 전송)
데이터 링크 계층에 대한 이해
- 랜 카드나 네트워크 장비의 하드웨어 주소(MAC 주소)만으로 통신하는 계층
- MAC주소
① 12개의 16진수로 구성
② 앞쪽 6개는 회사를 뜻하고, 뒤쪽 6개는 호스트 식별자로 회사에서 임의로 붙인ㅡㄴ 일종의 시리얼
③ 같은 MAC주소는 존재하지 않음
- 이더넷
① 이더넷 패킷의 최소 길이는 64Kbytes, 최대 길이는 1,518Kbytes
- 브릿지
① 랜과 랜을 연결하는 초기의 네트워크 장치
② 한 네트워크 에서 그 다음 네트워크로 데이터 프레임을 복사하는 역할
- 스위치
① 기본적으로 데이터 링크 계층에서 작동하는 스위치
② L2스위치는 연결된 시스템이 늘어날수록 패킷 간 충돌 때문에 매우 낮은 속도로 동작하는 더미 허브의 문제점을 해결하는 방안
네트워크 계층에 대한 이해
- 랜을 벗어난 통신을 하기 위해 네트워크 계층에서 IP주소를 사용
- ARP
① 데이터를 전달하려는 IP주소와 통신에 필요한 물리적인 주소(MAC)를 알아내는 프로토콜
② 선택된 매체에 브로드캐스트를 통해 특정 IP주소를 사용하는 호스트가 응답을 하도록 요구하는 방식을 사용
- IP
① 가장 대표적인 네트워크 계층의 프로토콜
② 하위 계층의 서비스를 이용하여 두 노드 간의 데이터 전송 경로를 확립해주는 역할
③ 32자리 2지신수로, 8자리마다 점을 찍어 구분
④ 오유를 제어하는 부분은 없으므로 ICMP가 항상 따라다닌다.
- ICMP
① 호스트 서버와 인터넷 게이트웨이 사이에서 메시지를 제어하고 오류를 알려주는 프로토콜
② 대표적인 것은 Ping
- IGMP
① 멀티캐스트에 관여하는 프로토콜로 멀티캐스트 그룹을 관리하는 역할
② 유니캐스트(Unicast)
l 1 : 1 연결
③ 브로드캐스트(Broadcast)
l 1: 전채
④ 멀티캐스트(Multicast)
l 1: 특정그룹
l 지정한 주소로 패킷을 한 번만 전달하면 멀티캐스트 그룹에 속한 모든 호스트에 전달되기 때문에 효율이 높음
l IP 멀티캐스트 주소는 D 클래스 주소로 규정
- 라우터
① 네트워크의 대표적인 장비로, 게이트웨이 라고도 함
② 논리적으로 분리된 둘 이상의 네트워크를 연결
③ 로컬 네트워크에서 브로드캐스트를 차단하여 네트워크를 분리
④ 패킷의 최적 경로를 찾기 위한 라우팅 테이블 구성
⑤ 패킷을 목적지까지 가장 빠르게 보내는 길잡이 역할
- 라우팅
① 목적지의 주소를 가기 위해서 어떤 경로로 갈지 결정하는 일
- 정적 라우팅
① 관리자 권한으로 특정 경로를 통해서만 패킷이 지날 수 있도록 설정
② 보안이 중요한 경우 사용
③ 라우팅 정보를 분석한 최적의 경로 설정 가능
④ 네트워크 환경 변화에 대한 대처가 어려움
- 동적 라우팅
① 라우터가 네트워크 연결 상태를 스스로 파악하여 최적의 경로를 선택해 전송
② 네트워크 연결 형태가 변경되어도 자동으로 문제를 해결
③ 경로 설정이 실시간으로 이루어져 변화에 대처가 쉽다.
④ 주기적인 라우팅 정보 송수신으로 인한 대역폭 낭비 초래
① 5계층: Application Layer == stream, message
② 4계층: Transport Layer == segment, datagram
③ 3계층: Internet Layer == packet
④ 2계층: Network Access Layer == frame
전송 계층에 대한 이해
- 대표적인 프로토콜 TCP(Transmission Control Protocol)
- TCP가 가진 주소를 포트(port)라 하며 0~65535번까지 존재
- 0~1023번을 잘 알려진 포트(Well Known Port)라고 부름(보통 0번 포트는 사용하지 않음).
TCP/IP 프로토콜
- TCP
① 연결 지향형 프로토콜
② IP와 함께 통신을 하는 데 반드시 필요한 가장 기본적인 프로토콜
- TCP의 특징
① 높은 신뢰성
② 가상 회선 연결 방식(연결 지향적, 일대일 서비스)
l 네트워크의 컴퓨터 사이에 통신을 위한 경로가 설정되면 이를 유지함
l 방송(Broadcast)나 멀티캐스트와 같이 일대 다 의 특성을 갖는 것이 아닌 1:1연결
③ 연결의 설정과 해제 기능
④ 데이터 Checksum / 오류의 유무 – 오류가 있으면 데이터를 버린다.
⑤ 시간 초과와 재전송(보장형 서비스)
l 패킷을 전송할 때 전송 순서 보장, 중복 방지, 흐름 제어, 체증 제어를 보장한다.
⑥ 데이터 흐름 제어
⑦ 양방향 통신 서비스, 스트림 전송 서비스
⑧ 안정한 연결 종료 서비스
Three-Way Handshaking(연결)
2. Send SYN : seq = 100, ctl = SYN
3. Send SYN : seq = 300, ack = 101(클라이언트의 seq+1), ctl = SYN, ACK
4. Send SYN : seq = 101, ack = 301(서버의 seq+1), ctl = ACK
Four-Way Handshaking(연결해제)
- 신뢰성 있는 연결
① 3헨드 쉐이크
l 양쪽 다 응답을 받는 거
② 2웨이로 하는 순간 마지막 받은 클라이언트 측면에서 이 서버가 보낸 SYN패킷을 받았는지 확인을 할 수가 없음
③ 시퀀스 넘버(랜덤 변수로 뽑는 값)
l A의 시퀀스 넘버 100, B의 시퀀스 넘버 300
l 연결을 하기 위해 A가 100번을 가진 SYN패킷을 B에게 보낸다.
l 받은 B는 ACK를 보낸다. 이때의 A의 시퀀스 넘버에 +1을 해서 ACK넘에 저장해서 보낸다. 보낼 때는 B의 시퀀스 넘버와 ACK넘버를 함께 보낸다.
l 그 다음에 ACK를 받은 A는 시퀀스 넘버가 101이 된다. 하지만 A가 B에게 ACK를 보낼 때는 B의 시퀀스 넘버에 +1을 해서 보낸다.
- UDP(User Datagram Protocol)
① 비 연결 지향형 프로토콜
② 상대방이 보낸 응답을 확인하지 않아 네트워크에 부하를 주지 않음.
③ 데이터 자체의 신뢰성이 없어 수신한 데이터의 무결성을 보장받지 못함
l 오류의 여부를 확인하지 않는다.
l 재 전송 또한 하지 않는다.
- UDP의 특징
① 비 연결 지향형
② 네트워크 부하 감소
③ 비 신뢰성
④ 전송된 데이터의 일부가 손실됨.
- UDP를 사용하는 경우
① 단순한 요청 – 응답 통신을 필요로 하고 흐름 제어와 오류 제어는 큰 관심이 없는 프로세스에 적절하다.
② FTP와 같이 대량의 데이터를 보내야 하는 프로세스에는 보통 사용되지 않는다.
③ 내부적인 흐름 제어와 오류 제어 메커니즘을 가지고 있는 프로세스에 적절하다.
④ 멀티캐스팅과 브로드캐스팅을 위한 전송 프로토콜에 적절
⑤ 멀티캐스팅과 브로드캐스팅 기능은 UDP 소프트웨어에 내장되어 있다.
⑥ SNMP와 같은 관리 프로세스에 사용된다.
⑦ 라우팅 정보 프로토콜과 같은 경로 갱신 프로토콜에 사용된다.