내용이 쉽게 구성되어 있어서 2~3일만에 빠르게 훑고 강의로 깊은 내용을 공부하려한다.
1. 네트워크의 구조
컴퓨터 네트워크 : 컴퓨터 간의 네트워크를 연결한 것
웹 브라우저에는 사진과 문자를 보여주기 위해 필요한 규칙이 있음 ==> 패킷을 사용
패킷 : 네트워크를 통해 전송되는 데이터의 작은 조각 (데이터가 커도 패킷으로 작게 나누어 전송)
왜 굳이 작게? 데이터를 크게 보내면 해당 데이터가 네트워크의 대역폭을 많이 점유해 다른 패킷의 흐름을 막을 수 있기 때문
패킷이 목적지에 도달하면 목적지에서는 패킷을 원래 상태로 되돌리는 작업을 해야한다.
패킷이 전송한 순서대로 도착하지 않을 수도, 네트워크가 지연되어 늦게 도착할 수도, 패킷이 누락될 수도 있음.
송신 측에서 수신 측으로 패킷을 보낼 때 패킷에 번호를 붙혀서 보냄 ==> 되돌릴 수 있음(디지털 데이터이기에 가능)
패킷은 컴퓨터 간의 데이터를 주고받을 때 네트워크를 통해 흘러가는 작은 데이터 조각
2. 정보의 양을 나타내는 단위
디지털 데이터 : 0과 1의 집합 (우리가 인터넷에서 보는 하나의 사진도 0과 1의 집합)
비트(bit) : 0과 1의 정보를 나타내는 최소 단위
8bit = 1byte
ASCII 코드 : 알파벳, 기호, 숫자 등을 다룰 수 있는 기본적인 문자 코드
==> 이러한 문자 코드가 있기 때문에 키보드를 누르면 컴퓨터로 전달되고 그 키에 대응하는 문자코드를 매칭시켜 출력
문자 데이터 또한 패킷으로 나누어 네트워크에 전송 ==> 받은 쪽에서 패킷을 원래 값으로 되돌림
네트워크에 데이터를 전송할 때 비트 정보를 전기 신호로 변환 ==> 실제로는 네트워크에 전기 신호가 전송되는 것
3. LAN과 WAN
랜(LAN) : 건물 안이나 특정 지역을 범위로 하는 네트워크(좁은 범위)
왠(WAN) : 지리적으로 넓은 범위에 구축된 네트워크
==> ISP(인터넷 서비스 제공자)가 제공하는 서비스를 사용해 구축된 네트워크를 의미한다.
ISP : 인터넷 상용 서비스 사업을 하고 있는 사업자 (KT, U+, SK)
랜은 연결하는 거리가 짧기 때문에 신호가 약해지거나 오류가 발생할 확률이 낮음. 속도가 빠름
왠은 멀리 떨어져 있는 랜과 연결되어 신호가 약해지거나 오류 발생할 확률 높음. 속도가 느림
4. 가정에서 하는 랜 구성
인터넷 공유기 (broadband router) : 가정용으로 만든 라우터이다. 허브, 스위칭 허브, 방화벽같은 다양한 기능 제공
유선 랜과 무선 랜
5. 회사에서 하는 랜 구성 (소규모 회사)
가정에서의 랜 구성과 다른 점은 DMZ라는 네트워크 영역이 존재한다는 점
DMZ (DeMilitarized Zone): 외부에 공개하기 위한 네트워크
==> 서버를 공개하는데 주로 웹서버, 메일서버, DNS 서버를 공개
- 웹 사이트를 외부 사용자에게 공개하려면 웹 서버를 외부에 공개
- 외부 사용자와 메일을 주고받으려면 메일 서버를 외부에 공개
- 외부에서 도메인 이름을 사용해 회사 서버에 접속하려면 DNS 서버를 외부에 공개
회사에서 서버를 운영하기 위해서는 서버를 사내에 설치하거나, 데이터 센터에 두거나, 클라우드에 둘 수 있다.
데이터 센터 : 대량의 데이터를 보관하기 위해 데이터 센터 서버나 네트워크 기기를 설치한 전용 시설
클라우드 : 인터넷을 통해 SW/HW 등의 컴퓨팅 서비스를 제공하는 것
사내에 서버를 운영하는 경우에는 회사 내에 서버 장비실을 두고 랙(선반)을 설치
랙 안에는 랙에 설치하기 적합한 형태와 크기를 가진 서버와 라우터, 스위치를 설치할 수 있음.
각 서버는 스위치와 연결하여 서로 통신할 수 있다.
온프레미스(on-premise) : 사내 또는 데이터 센터에 서버를 두고 운영하는 것
6. 네트워크의 규칙
프로토콜(protocol) : 통신을 위한 규약
통신을 위해서는 여러 독립적인 규약이 존재한다.
7. OSI 모델과 TCP/IP 모델
규격 : 기술적인 사항에 대해 제정한 기준
OSI 모델 : ISO가 정한 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나눈 표준 규격. OSI 7계층이라고 한다.
송신 측은 데이터를 보내기 위해 상위 계층에서 하위 계층으로 데이터를 전달(각 계층은 독립적)
수신 측은 하위 계층에서 상위 계층으로 전달된 데이터를 수신
TCP/IP 모델은 4계층으로 표현된 모델
8. 캡슐화와 역캡슐화
데이터를 전송할 때 데이터의 앞부분에 필요한 정보를 붙혀 다음 계층으로 전달한다. 이를 헤더라고 한다.
헤더에는 데이터를 전달받을 상대방에 대한 정보도 포함되어 있다.
헤더를 붙혀 나가는 것을 캡슐화라고 하고, 데이터를 받는 쪽에서 헤더를 제거하는 것을 역캡슐화라고 한다.
송신 측에서 데이터를 수신 측에 전달하기 위해 각 계층을 지나며 헤더가 하나씩 추가되고(캡슐화) 수신 측에서는 각 계층을 지나며 이 헤더를 하나씩 제거한다(역캡슐화).
- 전송 계층 헤더 : 신뢰할 수 있는 통신을 구현
- 네트워크 계층 헤더 : 다른 네트워크와 통신하기 위함
- 데이터 링크 헤더, 트레일러 : 물리적인 통신 채널을 연결
트레일러 : 데이터 링크계층에서 데이터를 전달할 때 데이터의 마지막에 추가하는 정보
VPN(Virtual Private Network): 가상 사설망. 가상 통신 터널을 만들어 기업 본사나 지사와 같은 거점 간을 연결하여 통신하거나 외부에서 인터넷으로 사내에 접속하는 것
==> VPN은 인터넷 VPN과 IP-VPN 두가지 종류가 존재
- 인터넷 VPN
- 거점 간 접속, 원격 접속 연결
- 거점 간 접속은 IPsec이라는 암호 기술 프로토콜 사용해 접속
- 원격 접속 연결은 외부에서 사용하는 컴퓨터와 내부 내트워크를 연결하므로 암호화된 통신로를 만듬
- IP-VPN
- MPLS라는 기술을 사용. 인터넷망이 아닌 통신 사업자 전용 폐쇄망을 사용
- 폐쇄망을 사용하므로 해킹, 데이터 변조의 위험이 없다.(암호화 기능 필요 x)
9. 물리 계층의 역할과 랜 카드의 구조
데이터는 전기 신호로 변환되어 네트워크를 통해 전송
데이터를 전기 신호로 변환하는 것이 물리 계층의 역할
전기 신호에는 아날로그 신호와 디지털 신호가 있다.
송신 측 물리 계층에서 데이터를 전기 신호로 변환하고 수신 측 물리 계층에서 전기 신호를 데이터(0과 1의 집합)으로 복원
컴퓨터는 랜 카드가 메인보드에 포함되어 있는 내장형 랜 카드 또는 별도의 랜 카드를 가지고 있다.
데이터(0과 1)가 랜 카드로 전송되고 랜 카드는 이를 전기 신호로 변환한다.
10. 케이블의 종류와 구조
전송 매체 : 데이터가 흐르는 물리적인 선로
- 유선 : 트위스트 페어 케이블, 광 케이플
- 무선 : 라디오파, 마이크로파, 적외선
트위스트 페어 케이블
- UTP 케이블 : Unshielded Twist Pair, 비차폐 연선
- STP 케이블 : Shielded Twist Pair, 차폐 연선
UTP 케이블 : 구리 선 여덟 개를 두 개씩 꼬아 만든 네 쌍의 전선. 실드로 보호되어 있지 않은 케이블
- 쉴드가 없어 노이즈의 영향을 받기 쉬움
- 저렴(일반적으로 많이 사용)
실드 : 금속 호일이나 금속의 매듭과 같은 것으로 외부에서의 노이즈를 막는 역할을 함
STP 케이블 : 두 개씩 꼬아 만든 선을 실드로 보호한 케이블
- 노이즈의 영향을 매우 적게 받음
- 비쌈
트위스트 페어 케이블(UTP, STP)는 일반적으로 랜 케이블(랜선)이라고 부름. 분류에 따라 규격과 속도가 다름
랜 케이블의 양쪽 끝에는 RJ-45라는 커넥터가 있음(랜선 꼽을 때 딸깍소리나는 거)
랜 케이블에는 다이렉트 케이블과 크로스 케이블 두 종류가 존재한다.
다이렉트 케이블 : 구리 선 여덟 개를 같은 순서로 커넥터에 연결한 케이블
크로스 케이블 : 한쪽 커넥터의 1번, 2번에 연결되는 구리 선을 다른 쪽 커넥터의 3번과 6번에 연결한 케이블
다이렉트 케이블, 크로스 케이블 둘다 1,2,3,6번 구리선을 사용하고 나머지 4개의 선은 사용하지 않는다.
다이렉트 케이블은 컴퓨터와 스위치를 연결할 때 사용, 크로스 케이블은 컴퓨터 간에 직접 랜 케이블로 연결할 때 사용
==> 만약 컴퓨터 간에 직접 랜 케이블로 연결해 데이터를 전달한다고 생각해보자. 양쪽 컴퓨터 모두 1,2번 선을 사용하여 데이터를 전달하는데 동시에 데이터를 전송하면 데이터 충돌이 일어난다. 따라서 컴퓨터 간에 직접 랜 케이블로 연결할 때는
크로스 케이블을 사용하는 것이다.
11. 리피터와 허브의 구조
물리 계층에서 동작하는 네트워크 장비 : 리피터, 허브
리피터 : 전기 신호를 정형(일그러진 전기 신호를 복원)하고 증폭하는 기능. 네트워크 중계 장비
==> 즉, 통신하는 상대가 멀리있을 때 리피터를 사이에 넣어 신호를 증폭시켜 전달한다.
==> 최근에는 다른 네트워크 장비가 리피터 기능을 지원해 쓸 필요가 없어짐
허브 : 전기 신호를 정형하고 증폭하는 기능. 여러 대의 컴퓨터를 서로 연결하는 장치이기도 함.
==> 포트를 여러개 가지고 있고, 리피터 허브라고도 불림. 허브는 포트를 여러개 가지고 있어 컴퓨터 여러대와 통신 가능
랜 케이블을 사용해 여러 대의 컴퓨터를 허브에 연결할 수 있다. 허브에 연결된 컴퓨터끼리 통신이 가능.
허브는 어떤 특정 포트로 데이터를 받았을 때 나머지 모든 포트로도 데이터를 전송하는 특징이 있음.
==> 만약 컴퓨터 1이 컴퓨터 2로 데이터를 보내기 위해 허브로 데이터를 보내면 허브는 나머지 모든 2,3,4,5로 데이터를 전송
허브는 스스로 판단하지 않고, 전기 신호를 모든 포트로 보내 더미 허브라는 이름으로 불림==> 이런 문제를 해결하기 위해 나온 것이 스위치
12. 데이터 링크 계층의 역할과 이더넷
랜에서는 데이터를 주고받는 규칙으로 이더넷을 사용
랜에서 데이터를 주고받으려면 데이터 링크 계층의 기술이 필요함
데이터 링크 계층 : 네트워크 장비 간에 신호를 주고받는 규칙을 정하는 계층. 랜에서 데이터를 정상적인 송수신을 위해 필요
==> 규칙 중 일반적으로 이더넷을 가장 많이 사용
이더넷 : 허브와 같은 장비에 연결된 컴퓨터와 데이터를 주고받을 때 사용
허브에 연결된 컴퓨터끼리 통신하는 과정을 생각해보자. 송신 측 컴퓨터에서는 데이터를 물리계층에서 전기 신호로 변환해 허브로 전송한다. 허브는 수신한 데이터를 모든 나머지 포트들에 송신한다고 하였다. 하지만, 송신자는 데이터를 수신자가 아닌 컴퓨터에서 보는 것은 매우 비합리적이다.
이를 위해 송신측 데이터 링크 계층에서는 데이터에 목적지 정보를 추가하여 물리 계층에 전달한다. 수신측 데이터 링크 계층에서는 자신의 컴퓨터가 목적지가 아니라면 무시한다.
허브는 들어온 데이터를 그대로 모든 포트로 전송하므로 여러 대가 동시에 허브로 데이터를 전송하면 충돌이 발생할 수 있다.
이더넷은 여러 컴퓨터가 동시에 데이터를 전송해도 충돌이 일어나지 않는 구조이다.
CSMA/CD 방법을 사용하여 케이블에 데이터가 흐르고 있다면 대기하고, 그렇지 않다면 데이터를 전송하기 때문에 충돌이 발생하지 않는다.
==> 하지만 효율 문제로 현재는 거의 사용하지 않고, 스위치를 통해 충돌이 일어나지 않는다.
13. MAC 주소의 구조
랜 카드에는 MAC 주소라는 물리 주소가 정해져있다. 이는 전 세계에서 유일한 번호로 할당되어 있음
==> Media Access Control Address
MAC 주소는 48비트 숫자로 구성, 앞쪽 24비트는 랜 카드를 만든 제조사 번호, 뒤쪽 24비트는 제조사가 붙인 일련번호
OSI 모델의 데이터 링크 계층 또는 TCP/IP 모델의 네트워크 계층에서 이더넷 헤더와 트레일러를 붙인다.
이더넷 헤더 : 목적지의 MAC 주소(6byte), 출발지 MAC 주소(6byte), 유형(2byte), 총 14byte로 구성
이더넷 유형 : 이더넷으로 전송되는 상위 계층의 프로토콜의 종류
==> 이러한 종류를 식별하는 유형 번호가 들어간다.
트레일러 : FCS(Frame Check Sequence)라고도 함. 데이터 전송 도중 오류가 발생하는지 확인하는 용도
프레임 : 이더넷 헤더와 트레일러가 추가된 데이터
==> 네트워크를 통해 프레임이 전송되는 것이다.
앞에서 공부한 내용을 통해 전체 과정을 살펴보자.
컴퓨터 1에서 컴퓨터 3으로 데이터를 전송한다고 가정한다.
컴퓨터 1의 데이터 링크 계층에서 이더넷 헤더와 트레일러를 추가해 프레임을 만든다(캡슐화). 물리 계층에서 전기 신호로 변환하여 허브로 전송한다. 허브는 컴퓨터 2,3,4,5에게 모두 전송하지만 이더넷 헤더에 목적지 MAC주소가 저장되어 있기 때문에 컴퓨터 3을 제외한 컴퓨터는 이를 무시(데이터를 파기함)하고 결과적으로 컴퓨터 3만 데이터를 수신하게 되는 것이다.
컴퓨터 1이 데이터를 전송하고 있을 때 컴퓨터 2가 데이터를 전송하려고하면 CSMA/CD 방식에 의해 대기하게 되는 것이다.==> 충돌이 일어나지 않음
14. 스위치의 구조
스위치를 사용하면 데이터 충돌이 발생하지 않는다.
스위치는 데이터-링크 계층에서 사용하고 레이어 2 스위치 or 스위칭 허브라고도 부른다.
스위치 내부에는 MAC 주소 테이블이 있다.
MAC 주소 테이블 : 스위치의 포트 번호와 해당 포트에 연결되어 있는 컴퓨터의 MAC주소가 등록되는 DB
==> 브리지 테이블이라고도 부른다.
처음에는 MAC 주소 테이블에 아무것도 등록되어 있지 않다. 컴퓨터에서 목적지 주소가 추가된 프레임이 전송되면 MAC 주소 테이블을 확인하고 출발지 MAC 주소가 등록되어 있지 않으면 MAC 주소를 포트와 함께 등록하는데
이 과정을 MAC 주소 학습 기능이라고 한다.
목적지 MAC주소가 MAC 주소 테이블에 등록되어 있지 않다면 허브와 같이 모든 포트로 데이터(프레임)을 전송한다. 이를 플러딩이라고 부른다.
만약 목적지 MAC 주소가 MAC 주소 테이블에 등록되어 있다면 목적지로만 데이터가 전송된다.
스위치는 MAC 주소를 기준으로 목적지를 선택하는 MAC 주소 필터링을 사용해 불필요한 데이터를 네트워크에 전송하지 않게된다.
15. 데이터가 케이블에서 충돌하지 않는 구조
통신 방식에는 전이중 통신과 반이중 통신이 존재한다.
전이중 통신 방식 : 데이터의 송수신을 동시에 통신하는 방식
반이중 통신 방식 : 회선 하나로 송신과 수신을 번갈아가며 통신하는 방식
컴퓨터들을 직접 랜 케이블(크로스 케이블)로 연결하면 전이중 통신 방식!
허브 내부에는 송수신이 나누어져있지 않기 때문에 허브로 연결하면 송수신을 번갈아 사용하는 반이중 통신 방식!
스위치는 충돌이 일어나지 않는 구조 ==> 전이중 통신 방식으로도 데이터를 주고 받을 수 있음 - 네트워크로 스위치를 사용하는 것이 표준스위치는 전송하면서 수신도 가능하므로 효율이 높음(전이중 통신 방식의 특징)
충돌 도메인(Collision Domain) : 충돌이 영향을 미치는 범위 - 허브에서는 허브에 접속된 모든 컴퓨터가 충돌 도메인!!!! - 스위치에서는 모든 컴퓨터가 아닌 충돌이 발생한 컴퓨터만 충돌 도메인으로 범위가 좁다. - 충돌 도메인의 범위가 넓을수록 네트워크가 지연!
ARP(Address Resolution Protocol) : 목적지 컴퓨터의 IP 주소를 이용하여 MAC 주소를 찾기 위한 프로토콜 - 출발지 컴퓨터가 목적지 주소를 모르면 MAC 주소를 알아내기 위해 네트워크를 브로드 캐스트 ==> 이것을 ARP 요청이라함 - 지정된 IP 주소를 가지고 있지 않은 컴퓨터는 무시, 가진 컴퓨터는 MAC 주소를 응답으로 보냄 ==> 이것을 ARP 응답이라함 - 출발지 컴퓨터에서는 MAC 주소를 얻은 후 MAC 주소와 IP 주소의 매핑 정보를 메모리에 보관 ==> 이것을 ARP 테이블이라함 - IP 주소가 변경되면 MAC 주소도 함께 변경됨 ==> ARP 테이블에서는 일정 시간이 지나면 삭제하고 다시 ARP 요청(쿠키랑 비슷하노)
16. 이더넷의 종류와 특징
이더넷은 케이블 종류, 속도에 따라 다양한 규격으로 분류
ex : 10BASE-T ==> 10은 통신속도, BASE는 전송방식, T는 케이블종류
- T는 UTP 케이블을 의미
- 동축 케이블의 경우에는 케이블의 최대 길이를 100M 단위로 표시
==> 10BASE5는 동축케이블이고 케이블의 최대길이가 500M
17. 네트워크 계층의 역할
앞서 살펴본 데이터-링크 계층에서의 이더넷 규칙을 기반으로 데이터를 전송하는데 이 규칙에 따라 같은 네트워크에 있는
컴퓨터와는 통신이 가능하다. 하지만 인터넷이나 다른 네트워크로는 불가능
이렇게 네트워크 간의 통신을 가능하게 하는 것이 네트워크 계층의 역할이다!!
이를 위해서는 라우터라는 네트워크 장비가 필요
라우터 : 데이터의 목적지가 정해지면 해당 목적지까지 어떤 경로로 가는 것이 좋은지를 알려주는 기능(최적의 경로)
- 당연한 이야기지만 목적지를 모르면 경로를 알 수 없음
- MAC 주소가 아닌 네트워크를 식별할 수 있는 IP주소가 필요
IP주소 : 어떤 네트워크의 어떤 컴퓨터인지 구분할 수 있도록하는 주소
IP주소로 목적지를 지정하고 데이터를 어떤 경로로 보낼지도 결정해야함 ==> 라우팅
라우팅은 라우터가 담당
라우터를 사용해 거리에 관계없이 다른 네트워크로 데이터를 보낼 수 있음
라우터의 라우팅 테이블을 사용해 경로 정보를 등록하고 관리
IP(Internet Protocol) : 네트워크 계층의 프로토콜
네트워크 계층에서 캡슐화를 할 때 IP 헤더를 붙인다.
- 버전, 헤더길이, 서비스 유형, 전체 패킷 길이, ID, 조각 상태
- 조각의 위치, TTL, 프로토콜, 헤더 체크섬, 출발지 IP 주소, 목적지 IP 주소로 구성
- 데이터를 정확하게 전달하기 위해 필요한 정보가 포함
IP 프로토콜을 사용하여 캡슐화할 때 데이터에 IP 헤더가 추가됨 ==> 이를 IP 패킷이라고 부름
18. IP 주소의 구조
IP주소는 ISP(인터넷 서비스 제공자)에게 받을 수 있다.
IP 버전에는 IPv4와 IPv6 두가지가 존재한다.
- IPv4 : 34bit, 약 43억개 만들 수 있음
- IPv6 : 128bit, 약 340간개 만들 수 있음(사실상 무한대), 주소 부족의 문제 해결
IPv4
IP 주소에는 공인 IP주소와 사설 IP주소가 있다. 공인 IP 주소는 ISP가 제공
IPv4는 주소가 고갈되고 있기 때문에 인터넷에 직접 연결되는 컴퓨터, 라우터에는 공인 IP주소를 할당하고,
회사나 가정의 랜에 있는 컴퓨터는 사설 IP 주소를 할당하는 정책을 사용한다.
만약 같은 랜 안에 여러 대의 컴퓨터가 존재한다면 공인 IP 주소는 라우터에 할당하고 랜 안의 컴퓨터에는 자유롭게 사설 IP주소를 할당하거나 라우터의 DHCP 기능을 사용해 주소를 자동으로 할당한다.
- DHCP : Dynamic Host Configuration Protocol로 IP 주소를 자동으로 할당하는 프로토콜
MAC 주소는 48bit로 구분하기 쉽게 16진수로 표시, IP 주소는
32bit로 표현된 2진수를 8bit씩 쪼개어 표시하는데 8bit를 옥텟이라고 부름
나누어진 8bit 2진수를 10진수로 변환하면 우리가 아는 IP 주소가 나온다.(실제로는 2진수로 표시되어 있음)
ex : 192.168.1.10
숫자의 범위는 2진수로는 00000000 ~ 11111111까지, 10진수로는 0 ~ 255까지
IP주소는 네트워크 ID와 호스트 ID로 나누어져있다.
- 네트워크 ID : 어떤 네트워크인지를 나타냄
- 호스트 ID : 해당 네트워크의 어느 컴퓨터인지를 나타냄
이 두가지가 합쳐져 IP주소가 된다.
19. IP 주소의 클래스 구조
A 클래스
A 클래스는 처음 8bit가 네트워크 ID, 다음 24bit가 호스트 ID이다.
또한 1옥텟의 범위는 2진수로 00000001 ~ 01111111이고 10진수로 1~127까지이다.
2~4옥텟의 범위는 2진수로 00000000 ~ 11111111이고 10진수로 0~255까지이다.
따라서 A 클래스의 IP 주소 범위는 1.0.0.0 ~ 127.255.255.255로 최대 호스트 수는 1677만 7214대
B 클래스
B 클래스는 처음 16bit가 네트워크 ID, 다음 16bit가 호스트 ID
B 클래스의 IP 주소 범위는 128.0.0.0 ~ 191.255.255.255로 최대 호스트 수는 6만 5534대
C 클래스
C 클래스는 처음 24bit가 네트워크 ID, 다음 8bit가 호스트 ID
C 클래스의 IP 주소 범위는 192.0.0.0 ~ 223.255.255.255로 최대 호스트 수는 254개이다.
공인 IP 주소 범위
사설 IP 주소 범위
20. 네트워크 주소와 브로드캐스트 주소의 구조
IP 주소에는 네트워크 주소와 브로드캐스트 주소가 있다.
이 두 주소는 특별한 주소로 컴퓨터나 라우터가 자신의 IP로 사용하면 안되는 주소이다. - 호스트 ID가 10진수고 0이라면 네트워크 주소 - 호스트 ID가 10진수고 255면 브로드캐스트 주소 - 192.168.1.0은 네트워크 주소, 192.168.1.255는 브로드캐스트 주소
네트워크 주소는 전체 네트워크에서 작은 네트워크를 식별하는 데 사용, 호스트 ID가 10진수로 0이라면 그 네트워크 전체를 대표하는 주소가 되는 것 ==> 전체 네트워크에서 대표 주소 - 만약 192.168.1.1 ~ 192.168.1.6의 IP주소를 가진 컴퓨터는 192.168.1.0의 네트워크에 있는 것임
브로드캐스트 주소는 네트워크 내의 컴퓨터나 장비 모두에게 한 번에 데이터를 전송하는데 사용되는 전용 IP 주소 - 192.168.1.255의 브로드캐스트 주소로 데이터 전송하면 네트워크 내의 모든 컴퓨터가 수신하게됨
21. 서브넷의 구조
네트워크를 분할하는 것을 서브넷팅! 분할된 네트워크는 서브넷!!
A 클래스와 같은 대규모 네트워크에서 브로드캐스트 패킷을 전송하면 모든 컴퓨터에 패킷이 전송되어 네트워크가 혼잡해진다. 따라서 A 클래스와 같은 대규모 네트워크를 작은 네트워크로 분할하여 브로드캐스트로 전송되는 패킷의 범위를 좁힐 수 있다. 서브넷팅을 사용해 네트워크를 분할하면 더 많은 네트워크를 만들 수 있어 IP 주소를 효과적으로 활용할 수 있다.
기존에 네트워크 ID와 호스트 ID로 구성되어 있던 것을 네트워크 ID, 서브넷 ID, 호스트 ID로 분할한다.==> 호스트 ID에서 비트를 빌려 서브넷으로 만듬
서브넷 마스크 : 네트워크 ID와 호스트 ID를 식별하기 위한 값 - 서브넷팅했을 때 네트워크 ID와 호스트 ID를 구분하기 위해 사용
프리픽스 표기법 : 서브넷 마스크를 슬래스(/비트 수)로 나타냄==> 만약, 네트워크 ID 24bit, 호스트 ID 8bit가 있을 때 호스트 ID에서 4비트를 빌려 서브넷 ID를 만든다면네트워크 ID와 서브넷 ID가 총 28비트가 되므로 /28로 표기한다.
22. 라우터의 구조
라우터는 네트워크를 분리할 수 있다.
스위치(레이어2 스위치)만 있는 네트워크에서는 모든 컴퓨터와 스위치가 위와 같이 동일한 네트워크에 속한다.
허브와 스위치는 네트워크를 분리할 수 없다.
다른 네트워크로 데이터를 전송하기 위해서는 라우터의 IP 주소를 설정해야한다. 이것을 기본 게이트웨이라고 함.
목적지를 컴퓨터 입장에서는 알지 못하므로 라우터로 출입구를 지정하고 데이터를 전송한다.
그림에서는 192.168.1.0/24에 속해있으므로 192.168.1.1로 설정하였다.
라우터의 라우팅 테이블을 사용해 목적지를 찾고 데이터를 전송한다.
라우팅 테이블은 수동으로 등록하는 방법과 자동으로 등록하는 방법이 있다. 수동은 소규모에 적합하고 자동은 대규모에 적합하다. 수동은 하나하나 일일이 등록하고 수정해야하지만, 자동은 라우터 간에 경로 정보를 서로 교환해 라우팅 테이블 정보를 자동으로 수정해준다.
라우터 간의 라우팅 정보를 교환하기 위한 프로토콜을 라우팅 프로토콜이라 한다.(RIP, OSPF, BGP)
23. 전송 계층의 역할
전송 계층은 목적지에 신뢰할 수 있는 데이터를 전달하기 위해 필요하다.
전송 계층에는 오류를 점검하는 기능이 있어 오류가 발생하면 데이터를 재전송하도록 요청한다.
전송 계층에서는 전송된 데이터의 목적지가 어떤 애플리케이션인지 식별하는 기능이 있다.
전송 계층의 특징
1. 신뢰성/정확성
- 데이터를 목적지에 문제없이 전달하는 것
2. 효율성
- 데이터를 빠르고 효율적으로 전달하는 것
연결형 통신 : 신뢰할 수 있고 정확한 데이터를 전달하는 통신, 상대편과 확인해가며 통신하는 방식
- 신뢰성/정확성 우선
비연결형 통신 : 효율적으로 데이터를 전달하는 통신(비신뢰성), 상대편을 확인하지 않고 일방적으로 전송
- 효율성 우선, 빠름
일반적으로는 연결형 통신을 사용하지만 동영상과 같은 빠른 전송을 요할때는 비연결형 통신을 사용한다.
신뢰할 수 있고 정확한 데이터 전송이 필요한 애플리케이션 ==> 연결형 통신효율적인 데이터 전송이 필요한 애플리케이션 ==> 비연결형 통신
전송 계층의 연결형 통신 프로토콜에는 TCP 사용! 비연결형 통신 프로토콜에는 UDP 사용!
24. TCP의 구조
TCP : 신뢰성, 정확성을 우선으로하는 연결형 통신 프로토콜
데이터가 전송될 때 각 계층을 거치며 헤더를 추가하는 캡슐화가 일어난다고 했는데 이 때 TCP를 사용할 때 붙이는 헤더를 TCP 헤더라 하고, 이것이 붙은 데이터를 세그먼트라고한다. TCP 헤더도 정보가 나열되어 있다.
TCP 헤더에는 목적지까지 데이터를 제대로 전송하기 위한 정보가 있다.
데이터를 전송하기전에 Connection(커넥션, 연결)이라는 가상의 독점 통신로를 확보해야한다.
Connection : TCP 통신에서 정보를 전달하기 위해 사용되는 가상의 통신로로 연결을 확립하고 데이터를 전송
TCP 헤더의 코드 비트에 커넥션의 제어 정보가 기록된다.
코드 비트의 각 비트별로 역할이 존재한다. default값은 0이고 비트가 활성화되면 1이된다.
커넥션을 확립하기 위해서 SYN과 ACK가 필요하다.
SYN : 연결 요청
ACK : 확인 응답
SYN와 ACK를 사용해 연결을 확립하고 신뢰할 수 있는 연결을 위해 데이터를 전송하기 전에 패킷을 교환한다.
1. 컴퓨터 1에서 컴퓨터 2로 연결 확립 허가를 위한 요청(SYN) 전송
2. 컴퓨터 2에서 받은 요청을 허가하는 응답(ACK)을 전송, 컴퓨터 2도 컴퓨터 1에게 연결 확립 요청(SYN)을 함께 전송
3. 컴퓨터 1이 연결 확립 응답(ACK)를 컴퓨터 2에게 보내면서 최종적으로 연결이 확립
이러한 연결 확립을 위한 3번의 패킷 교환을 3-way handshake라고 한다!!
데이터를 전송한 이후에는 연결을 끊기 위한 패킷을 교환한다.(FIN과 ACK 사용)
FIN : 연결 종료
1. 컴퓨터 1에서 컴퓨터 2로 연결 종료 요청(FIN)을 전송
2. 컴퓨터 2에서 컴퓨터 1로 연결 종료 응답(ACK)을 반환
3. 컴퓨터 2에서도 연결 종료 요청(FIN) 전송
4. 컴퓨터 1에서 컴퓨터 2로 연결 종료 응답(ACK)을 반환
25. 일련번호와 확인 응답 번호의 구조
3-way handshake가 끝나고 실제 데이터를 전송하거나 수신할 때는 TCP 헤더의 일련 번호, 확인 응답 번호를 사용
일련번호(sequence number) : 송신 측에서 수신 측에게 해당 데이터가 몇 번째 데이터인지를 알려주는 역할(TCP는 데이터를 분할해서 보내기 때문에 필요함!!)
확인 응답 번호(acknowledgement number) : 수신 측이 몇 번째 데이터를 수신했는지 송신 측에 알려주는 역할, 다음 번호의 데이터를 요청(확인 응답)하는데도 사용된다.
이 과정을 데이터의 전송이 완료될 때까지 반복한다.
재전송 제어 : TCP는 일련번호와 확인 응답 번호를 사용해 데이터가 손상되거나 유실된 경우에 데이터를 재전송
데이터를 전송하는 중 오류가 발생하면 일정 시간 대기한 후 재전송
세그먼트를 하나 보낼 때마다 확인 응답을 한 번씩 반환하는 방식은 효율적이지 않다.
세그먼트를 연속해서 보내고 난 다음 확인 응답을 반환하면 효율성이 높아짐
받은 세그먼트를 일시적으로 버퍼에 보관한다. 버퍼 덕분에 세그먼트를 연속해서 보내도 수신 측이 대응할 수 있고 확인 응답의 효율이 높아짐.
수신 측이 세그먼트(데이터)를 대량으로 전송받아 버퍼에 모두 저장하지 못하는 경우를 오버플로우(overflow)라 한다.
오버플로우를 막기 위해 버퍼의 max size를 TCP 헤더의 윈도우 크기(window size)에 저장해둔다.
즉, 윈도우 크기는 얼마나 많은 용량의 데이터를 저장해둘 수 있는지를 나타낸다. 이는 3-way handshake과정에서 상대 버퍼의 한계 값(윈도우 크기)를 확인한다.
26. 포트 번호의 구조
전송된 데이터의 목적지가 어떤 애플리케이션인지 구분하는 역할을 전송 계층이 담당한다.
이를 위해 TCP 헤더의 출발지 포트 번호, 목적지 포트 번호가 필요!!
포트 번호는 0 ~ 65535번을 사용할 수 있음.
0 ~ 1023번 포트는 주요 프로토콜이 사용하도록 예약(well-known ports), 10번과 24번은 예약되있지만 사용되지 않음.
서버측 애플리케이션에서 사용
1025번 이상은 랜덤포트(클라이언트의 송신 포트로 사용)
데이터를 전송할 때는 상대방의 IP 주소가 필요하지만, 어떤 애플리케이션이 사용되고 있는지 구분하려면 TCP는 포트 번호가 필요함.
포트 번호를 붙이지 않고 통신하면 데이터가 컴퓨터에 도착하여도 애플리케이션까지 도달할 수 없다.
27. UDP의 구조
UDP는 비연결형 통신이고 효율성을 중요하게 여기므로 데이터를 효율적으로 빠르게 보낼 수 있다.스트리밍 방식의 동영상 서비스와 같은 곳에서 사용함.
UDP 헤더가 붙은 데이터를 UDP 데이터그램이라한다.
상대방을 확인하지 않고 연속해서 데이터를 전송하므로 속도가 빠르다. UDP를 사용하면 랜에 있는 컴퓨터나 네트워크 장비에 데이터를 일괄로 전송하는 브로드캐스트를 할 수 있다.
28. 응용 계층의 역할
서버에는 웹 서버 프로그램, 메일 서버 프로그램 등이 존재하고 이런 애플리케이션은 응용 계층에서 동작한다.
여기서는 7계층 말고 인터넷 5계층으로 응용 계층에 세션, 표현 계층을 포함해서 이야기한다.
응용계층에서는 클라이언트의 요청을 전달하기 위해 서버(통신 대상)가 이해할 수 있는 데이터로 변환하고 전송 계층으로 전달하는 역할을 한다.
이름 해석 : 네트워크에서 컴퓨터나 네트워크 장비에 붙은 이름을 기반으로 IP 주소를 알아내는 것
29. 웹 서버의 구조(웹 사이트 접속)
WWW(World Wide Web, W3, 웹)는 HTML, URL, HTTP 세 가지 기술이 사용된다.
HTML : 웹 페이지에서 문장 구조나 문자를 꾸미는 태그를 사용하여 작성하는 마크업 언어, 하이퍼텍스트를 작성하는 마크업 언어
하이퍼텍스트로 문자, 이미지를 표시하거나 하이퍼링크를 사용할 수 있음
하이퍼링크 : 웹 사이트에서 아이콘, 버튼 등의 링크를 클릭해 다른 사이트로 이동시켜주는 역할
HTTP Request를 보내고 HTTP Response를 반환받는 과정을 통해 HTTP 통신이 일어난다. 초기의 HTTP/1.0 버전에서는 Request를 보낼 때마다 연결했다 끊는 작업을 반복하여 속도가 느렸다.
HTTP/1.1 버전에서 데이터 교환을 모두 끝내면 연결을 끊는 keepalive라는 기능이 추가되었다. keepalive를 통해 매번 연결 수립과 끊기를 하지 않고 효율을 높였다. 요청을 보낸 순서대로 응답을 처리한다.
HTTP/2.0 버전에서는 요청을 보낸 순서대로 응답을 반환하지 않아도 되기때문에 콘텐츠를 좀 더 빠르게 표시할 수 있게되었다. 순서대로 처리하면 앞의 요청이 길어지면 뒤에는 계속 대기해야함.
30. DNS 서버의 구조
DNS는 응용계층에서 이름 해석을 통해 도메인 이름을 IP 주소로 변환하는 역할을 한다.
즉, URL을 IP주소로 변환한다.
만약 "https://www.naver.com"으로 접속하면 DNS 서버가 해당 웹사이트 서버의 IP 주소를 알려준다.(이름 해석)
naver.com은 도메인 이름이고 www는 호스트 이름이다!!
또한 여러개의 DNS서버를 두고 정보 교환이 일어나기도한다. DNS서버는 전 세계에 흩어져있고 모두 계층적으로 연결되어있다.
31. 메일 서버의 구조 (SMTP, POP3)
메일 송수신을 위해서 클라이언트 측의 메일 프로그램과 서버 측의 메일 서버 프로그램 간에 통신이 필요하다.
이때 사용되는 프로토콜은 메일을 보내는데 사용되는 SMTP(포트번호 25), 메일을 받는데 사용되는 POP3(포트번호 110)가 있다. 또한 SMTP는 메일 서버 간의 메일 전송에도 이용된다.
메일 서버에는 메일 박스라는 메일을 보관해주는 기능이 존재한다. POP3를 사용해 메일 박스에서 메일을 가져와 목적지 컴퓨터로 전송한다. 수신할 때는 사용자 인증이 필요!
ping 명령 : 목적지 컴퓨터와의 통신을 확인, ICMP 프로토콜을 사용해 목적지로 ICMP 패킷을 전송하고 응답이 정상적으로 반환되는지를 확인하는 명령, 정상적으로 실행된다면 네트워크 연결이 정상이라고 판단 가능
32. 랜 카드에서의 데이터 전달과 처리
192.168.1.0/24 , 172.16.0.0/16 , 192.168.10.0/24 총 3개의 네트워크로 구성되어있다.
전체 흐름을 OSI 모델로 나타낸 그림이다.
컴퓨터에서 웹 브라우저에 url을 입력하고 엔터를 누르면 OSI 모델의 캡슐화가 시작된다.(3-way handshake는 완료되었다고 가정)
응용 계층을 거쳐 HTTP 메시지가 전송 계층에 전달된다. 여기서 TCP 헤더가 붙음(출발지 포트번호, 목적지 포트번호). TCP헤더가 붙어 세그먼트가 됨.
출발지 포트번호는 잘 알려진 포트가 아닌 포트 중 무작위로 선택. 세그먼트가 네트워크 계층에 전달된다.
네트워크 계층에서는 세그먼트에 IP 헤더를 추가하는데 여기에는 출발지 IP주소, 목적지 IP주소가 붙어 IP 패킷이된다.
이것이 데이터 링크 계층으로 전달되고 이더넷 헤더가 추가되어 이더넷 프레임이 된다.
이더넷 프레임이 물리계층으로 전달되고 전기 신호로 변환되어 네트워크로 전송된다.(랜 카드)
33. 스위치와 라우터에서의 데이터 전달과 처리
스위치 A는 데이터 링크 계층에서 데이터를 전기 신호로 변환해 라우터 A로 전송한다.
라우터 A에 전기 신호가 도착하면 데이터 링크 계층에서 이더넷 프레임의 목적지 MAC 주소와 자신의 MAC 주소를 비교하고 주소가 같다면 역캡슐화를 진행하고 네트워크 계층에 전달한다.
네트워크 계층에서 자신의 라우팅 테이블과 목적지 IP 주소를 비교한다.
라우터 A의 라우팅 테이블에서 목적지 IP 주소의 경로를 알 수 있으므로 라우팅이 가능하다.
따라서 출발지 IP 주소를 라우터의 외부 IP 주소(WAN)로 변경하고 데이터 링크 계층으로 다시 전송하여 헤더를 붙이고 물리계층을 통해 전기 신호로 변환해 네트워크로 전달한다.
전기 신호가 라우터 B로 전달되고 마찬가지로 목적지 MAC 주소와 자신의 MAC주소를 비교해 역캡슐화를 진행한다.
그 후 네트워크 계층으로 전달되어 라우팅 테이블과 목적지 IP 주소를 비교한다.
출발지 IP 주소를 라우터 B의 내부 IP 주소(LAN)로 변경하고 스위치로 전달되게 이더넷 헤더와 트레일러를 붙이고 물리계층에서 전기신호로 변환되어 네트워크로 전달된다.
이 전기 신호가 라우터 B에서 스위치 B로 전달된다. 전기 신호를 데이터 링크 계층에서 처리하고 웹 서버에 데이터를 전기 신호로 변환하여 전달한다.
34. 웹 서버에서의 데이터 전달과 처리
웹 서버로 데이터가 전기 신호로 들어온다. 데이터 링크 계층에서 이더넷 프레임의 목적지 MAC 주소와 자신의 MAC 주소를 비교하고 주소가 같다면 역캡슐화를 진행하여 네트워크 계층으로 전송한다.
네트워크 계층에서 목적지 IP 주소와 웹 서버의 IP 주소를 비교하고 같다면 역캡슐화를 진행하여 전송 계층으로 전달한다.
전송 계층에서는 목적지 포트 번호를 확인하여 어떤 애플리케이션으로 전달해야하는지를 판단한 뒤 역캡슐화를 진행하여 응용계층으로 전달한다.
웹 브라우저로부터 스위치 라우터를 거쳐 웹 서버로 들어온 한 cycle이 요청에 관한 흐름이다.
요청을 처리하고 웹 서버에서 동일한 과정으로 응답을 보내야한다.
라우팅 : 패킷을 목적지까지 보낼 때 최적의 경로를 통해 전송하는 것
- 정적 라우팅
- 관리자가 미리 라우팅 테이블에 경로를 수동으로 추가하는 방법
- 목적지까지 경로를 고정하거나 경로가 하나로 한정되는 경우에 사용
- 소규모 네트워크, 대역폭에 대한 부담 적음, 보안이 좋음.
- 경로에 장애가 발생해도 다른 경로로 우회 불가
- 동적 라우팅
- 네트워크 변경을 자동으로 감지해 라우팅 테이블을 업데이트
- 네트워크 장애가 발생하면 라우터끼리 정보를 교환해 최적의 경로로 전환
- 대규모 네트워크
35. 무선 랜의 구조
무선 랜은 비가시적인 전파를 이용해 연결한다.
무선 랜은 케이블이 없어 물리적인 불편함이 없지만, 유선에 비해 속도가 불안정하고 전파가 약하면 연결이 끊긴다.
또한 유선 랜에 비해 해킹될 위험이 높아 보안에 신경을 써야함.(암호화, 인증 설정)
무선 랜은 무선 액세스 포인트, 무선 클라이언트(컴퓨터, 스마트폰)로 구성
클라이언트가 액세스 포인트와 통신하려면 무선 랜 칩, 무선 랜 어댑터가 필요하다.
무선 랜 어댑터는 USB 포트에 꽂는 USB 메모리 방식 어댑터와 컴퓨터 카드 방식 어댑터가 존재.
USB 메모리 방식 어댑터는 우리가 흔히 아는 동글이다.
우리가 무선 공유기에 노트북, 스마트폰을 연결하는 것은 무선 공유기에 무선 액세스 포인트 기능이 포함되어 있기 때문이다.
무선 랜을 연결하는 방식에는 크게 Infrastructure 방식과 Ad Hoc 방식이 존재한다.
Infrastructure
무선 액세스 포인트를 통해 통신하는 방식이다. 주로 이 방식이 사용된다.
Ad Hoc
무선 클라이언트끼리 직접 통신하는 방식이다.
무선 랜 규격
무선 랜은 IEEE802.11 규격을 준수하는 기기로 구성되어 있다.
IEEE802.11 : 미국 기술 표준화 단체인 IEEE에서 승인한 무선 랜의 표준화 기술
무선 클라이언트와 무선 액세스 포인트가 서로 규격이 맞아야 통신할 수 있다.
무선 액세스 포인트를 무선 공유기, 무선 AP라고도 부른다.
36. SSID의 구조
무선 액세스 포인트와 무선 클라이언트를 연결할 때 혼선을 피하기 위해 SSID라는 액세스 포인트의 고유 이름을 사용하고, 네트워크 이름, 인증, 암호화, 암호화 키를 설정해야한다.
이렇게 설정을 해두어야만 무선 클라이언트가 자동으로 무선 액세스 포인트를 찾아 통신할 수 있기 때문.
비컨(beacon) : 액세스 포인트가 네트워크의 모든 기기에 주기적으로 자신을 알리기 위해 전송하는 신호
무선 클라이언트는 이러한 비컨을 잡아 연결을 시도한다. 그 후 서로의 SSID가 같은지를 확인한다.
설정된 인증 방식이 올바른지 확인하고 액세스 포인트에 연결을 요청하고 승인을 받으면 연결되게 된다.
SSID(Service Set Identifier) : 무선랜을 통해 전송되는 패킷들의 각 헤더에 덧붙여지는 32바이트 길이의 고유 식별자로, 무선 장치들이 BSS(Basic Service set)에 접속할 때 마치 암호처럼 사용된다. SSID 는 하나의 무선 랜을 다른 무선 랜으로부터 구분해 주므로, 특정 무선 랜에 접속하려는 모든 AP 나 무선 장치들은 반드시 동일한 SSID 를 사용해야만 한다.
무선 액세스 포인트와 무선 클라이언트 사이의 거리가 멀어질수록 전파가 약해져 접속이 잘 안되거나 통신 속도가 느려진다.
이를 해결하기 위해 무선 액세스 포인트를 여러 대 설치할 수 있다.
채널 : 무선 랜으로부터 여러 기기를 동시에 연결할 수 있도록 분할된 주파수 대역
이 때 여러 무선 액세스 포인트가 동일한 채널로 연결되어 있으면 주파수가 서로 겹쳐 전파 간섭이 생기고 통신 속도가 느려진다. 따라서 무선 액세스 포인트는 서로 다른 채널을 설정해 주파수가 겹치지 않도록 해야한다.
아니면 같은 채널로 설정하더라도 각 액세스 포인트를 거리를 두고 설치하면 괜찮다.
하지만 일부 규격(IEEE802.11b, IEEE802.11g)은 다른 채널이라도 일부 같은 주파수를 사용하기 때문에 전파 간섭이 일어나기도 한다. IEEE802.11a는 각 채널 간 다른 주파수 대역을 사용해 전파가 겹쳐도 문제없다.
기본적으로 무선 액세스 포인트는 알아서 최적의 채널을 찾아준다.
'Book' 카테고리의 다른 글
HTTP 완벽 가이드 - 10장 : HTTP/2.0 (0) | 2021.11.08 |
---|---|
HTTP 완벽 가이드 - 4장. 커넥션 관리 (0) | 2021.11.05 |
이펙티브 자바 3판(읽는 중) (0) | 2021.07.23 |
"읽기 좋은 코드가 좋은 코드다" 정리 (0) | 2021.05.27 |
읽을 책 목록 (계속 추가 예정) (0) | 2021.05.27 |