Skip to content

Commit

Permalink
Merge branch 'main' into minenam
Browse files Browse the repository at this point in the history
  • Loading branch information
minenam authored Feb 5, 2024
2 parents 815564c + dbc837d commit 4d12a4d
Show file tree
Hide file tree
Showing 17 changed files with 296 additions and 98 deletions.
45 changes: 21 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,46 +6,44 @@

하루 한 장이라도 책을 읽고 인증샷과 DIL을 작성해서 올려주세요.

- 책 : IT 엔지니어를 위한 네트워크 입문
- 기간 : 2024-01 ~
- 책 : IT 엔지니어를 위한 네트워크 입문
- 기간 : 2024-01 ~

<image src="./images/book_cover.jpg"
style="width: 200px; margin-left: 22px;">

## 1. Contributior

| Name | Contact |
| ---- | ------- |
| [@unchaptered](https://github.com/unchaptered) | [email protected] |
| [@playhuck](https://github.com/playhuck) | [email protected] |
| [@smilejakdu](https://github.com/smilejakdu) | |
| [@aksmf1442](https://github.com/aksmf1442) | |
| [@brightchul](https://github.com/brightchul) | |
| [limsangkyu0219]() | |
| [limseongdev]() | |
| [@jiwon615](https://github.com/jiwon615) | |
| [@sonmansu](https://github.com/sonmansu) | |
| [@refresh88](https://github.com/refresh88) | |
| [@kafkaaaa](https://github.com/kafkaaaa) | |
| [@minenam](https://github.com/minenam) | |
| [@jaeeunlee322](https://github.com/jaeeunlee322) | |
| Name | Contact |
| ------------------------------------------------ | ----------------------------- |
| [@unchaptered](https://github.com/unchaptered) | [email protected] |
| [@playhuck](https://github.com/playhuck) | [email protected] |
| [@smilejakdu](https://github.com/smilejakdu) | |
| [@aksmf1442](https://github.com/aksmf1442) | |
| [@brightchul](https://github.com/brightchul) | |
| [@sk-lim19f](https://github.com/sk-lim19f) | |
| [limseongdev]() | |
| [@jiwon615](https://github.com/jiwon615) | |
| [@sonmansu](https://github.com/sonmansu) | |
| [@refresh88](https://github.com/refresh88) | |
| [@kafkaaaa](https://github.com/kafkaaaa) | |
| [@minenam](https://github.com/minenam) | |
| [@jaeeunlee322](https://github.com/jaeeunlee322) | |

## 2. Group Rule

깔끔하게 정리해두면 `나와 동료들의 회고`를 볼떄도 편할 것 같습니다.

이에 편의를 위한 몇 가지 간단한 룰이 있어요!

- [2.a. 각자 branch 만들기](./README.md#2a-각자-branch-만들기-😊)
- [2.b. PR 병합 전에 제목 변경하기](./README.md#2b-pr-병합-전에-제목-변경하기-😊)
- [2.a. 각자 branch 만들기](./README.md#2a-각자-branch-만들기-😊)
- [2.b. PR 병합 전에 제목 변경하기](./README.md#2b-pr-병합-전에-제목-변경하기-😊)

### 2.a. 각자 branch 만들기 😊

1. 각자 main branch에서 분기해서 <개인 branch>를 만들어주세요!
2. docs/ 경로에 <개인 branch 명>에 맞는 폴더를 만들어주세요.
- docs/unchaptered 등과 같이
3. 파일명은 YYYY-MM-DD 형태로 작성하시되, 나머지는 개인이 편하게 작성해주시면 됩니다!
- docs/unchaptered/2024-02-01_회고
2. docs/ 경로에 <개인 branch 명>에 맞는 폴더를 만들어주세요. - docs/unchaptered 등과 같이
3. 파일명은 YYYY-MM-DD 형태로 작성하시되, 나머지는 개인이 편하게 작성해주시면 됩니다! - docs/unchaptered/2024-02-01\_회고

### 2.b. PR 병합 전에 제목 변경하기 😊

Expand Down Expand Up @@ -81,4 +79,3 @@ PR은 N월 N주차에 형태에 맞춰서 작성해주세요!

<img src="./images/pr_search_sample_2.png"
style="width: 800px;">

Binary file added docs/sk-lim19f/2024-02-02.JPEG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
19 changes: 19 additions & 0 deletions docs/sk-lim19f/2024-02-02.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# 시작

이번 스터디를 통해 네트워크 지식을 확실히 하며 언제든 필요할 떄 보기 위해 내용을 정리하며 진행할 예정

# 1. 네트워크 시작하기

## 1.1 네트워크 구성도 살펴보기

### 1.1.2 데이터 센터 네트워크

- 데이터 센터 구성은 기존에는 3계층 구성이 일반적이었지만 가상화 기술과 높은 대역폭을 요구하는 스케일 아웃(Scale-Out) 기반의 애플리케이션과 서비스가 등장하면서 2계층 구성인 스파인-리프(Spine-Leaf) 구조로 데이터 센터 네트워크가 변화되었음.

## 1.2 프로토콜

- 적은 컴퓨팅 자원과 매우 느린 네트워크 속도를 이용해 최대한 효율적으로 통신하는것이 목표이다 보니 대부분의 프로토콜이 문자 기반이 아닌 2진수 비트(bit) 기반으로 만들어짐
- 애플리케이션 레벨의 프로토콜은 비트 기반이 아닌 문자 기반 프로토콜들이 많이 사용되고 있음(HTTP,SMTP 등)
- 실제 텍스트 파일과 같은 데이터가 전달되기 때문에 효율성은 비트 기반 프로토콜보다 떨어지지만 다양한 확장이 가능
- TCP/IP 프로토콜 스택
- 이더넷, 네트워크 계층, 전송 계층, 애플리케이션 계층
Binary file added docs/sk-lim19f/2024-02-03.JPEG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
78 changes: 78 additions & 0 deletions docs/sk-lim19f/2024-02-03.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
## 1.3 OSI 7계층과 TCP/IP

### 1.3.1 OSI 7계층

- 계층의 역할과 목표에 따른 분류
- 1~4계층: 데이터 플로 계층(Data Flow Layer) / 하위 계층(Lower Layer)
- 5~7계층: 애플리케이션 계층(Application Layer) / 상위 계층(Upper Layer)

### 1.4.1 1계층(피지컬 계층)

- 물리적 연결과 관련된 정보를 정의
- 주로 전기 신호를 전달하는데 초점
- 주요 장비
- 네트워크 통신을 중재하는 네트워크 장비: 허브, 리피터
- 케이블 본체를 구성하는 요소: 케이블, 커넥터
- 컴퓨터의 랜카드와 케이블을 연결하는 장비: 트랜시버
- 네트워크 모니터링과 패킷 분석을 위해 전기신호를 다른장비로 복제: 탭

### 1.4.2 2계층(데이터 링크 계층)

- 전기 신호를 모아 우리가 알아볼 수 있는 데이터 형태로 처리
- 1계층과는 다르게 전기 신호를 정확히 전달하기보다는 주소 정보를 정의하고 정확한 주소로 통신이 되도록 하는 데 초점
- 출발지와 도착지 주소를 확인
- 주소 체계가 생긴다는 의미는 한 명과 통신하는 것이 아니라 동시에 여러 명과 통신할 수 있다는 것이므로 무작정 데이터를 던지는 것이 아니라 받는 사람이 현재 데이터를 받을 수 있는지 확인하는 작업부터 실행
- 네트워크 구성요소
- 네트워크 인터페이스 카드
- 스위치
- 중요한 특징
- MAC 주소

### 1.4.3 3계층(네트워크 계층)

- IP 주소와 같은 논리적인 주소가 정의
- 데이터 통신을 할 때 두 가지 주소가 사용되는데 2계층의 물리적인 MAC 주소와 3계층의 논리적인 IP 주소
- 3계층을 이해할 수 있는 장비나 단말은 네트워크 주소 정보를 이용해 자신이 속한 네트워크와 원격지 네트워크를 구분할 수 있고 원격지 네트워크를 가려면 어디로 가야하는지 경로를 지정하는 능력이 있음
- 주요장비
- IP 주소를 사용해 최적의 경로를 찾아주고 해당 경로로 패킷을 전송하는 역할: 라우터

### 1.4.4 4계층(트랜스포트 계층)

- 실제로 해당 데이터들이 정상적으로 잘 보내지도록 확인하는 역할
- 패킷 네트워크는 데이터를 분할해 패킷에 실어보내다 보니 중간에 패킷이 유실되거나 순서가 바뀌는 경우가 생길 수 있음
- 이 문제를 해결하기 위해 패킷이 유실되거나 순서가 바뀌었을 때 바로잡아 주는 역할 담당
- 패킷에 보내는 순서를 명시한 것: 시퀀스 번호(Sequence Number)
- 받는 순서를 나타낸 것: ACK 번호(Acknowledgement Number)
- 장치 내의 많은 애플리케이션을 구분하는 것: 포트 번호(Port Number)
- 주요 장비
- 로드 밸런서, 방화벽
- 포트번호와 시퀀스, ACK 번호 정보를 이용해 부하를 분산하거나 보안 정책을 수립해 패킷을 통과, 차단하는 기능을 수행

### 1.4.5 5계층(세션 계층)

- 양 끝단의 응용 프로세스가 연결을 성립하도록 도와주고 연결이 안정적으로 유지되도록 관리하고 작업 완료 후에는 이 연결을 끊는 역할
- TCP/IP 세션을 만들고 없애는 책임이 있음
- 에러로 중단된 통신에 대한 에러 복구와 재전송도 수행

### 1.4.6 6계층(프레젠테이션 계층)

- 표현 방식이 다른 애플리케이션이나 시스템 간의 통신을 돕기 위해 하나의 통일된 구문 형식으로 변환시키는 기능을 수행
- MIME 인코딩이나 암호화, 압축, 코드 변환과 같은 동작이 이루어짐

### 1.4.7 7계층(애플리케이션 계층)

- 애플리케이션 프로세스를 정의하고 애플리케이션 서비스를 수행
- 네트워크 소프트웨어의 UI 부분이나 사용자 입/출력 부분을 정의하고 애플리케이션 서비스를 수행
- 대표적인 프로토콜로는 FTP, SMTP, HTTP, TELNET이 있음

## 1.5 인캡슐레이션과 디캡슐레이션

- 데이터를 보내는 과정을 인캡슐레이션(Encapsulation), 받는 과정을 디캡슐레이션(Decapsulation)
- 2가지 정보 흐름
- 인캡슐레이션, 디캡슐레이션 과정을 통해 데이터가 전송되는 과정
- 각 계층 헤더를 이용해 송신자 계층과 수신자 계층 간의 논리적 통신 과정
- 결국 주고받는 데이터 흐름을 간단히 표현하면 상위 계층에서 하위 계층으로, 다시 하위 계층에서 상위 계층으로 전달되는 형태
- 헤더에 반드시 포함된 두 가지 정보
- 현재 계층에서 정의하는 정보
- 상위 프로토콜 지시자
- 프로토콜 스택은 상위 계층으로 올라갈수록 종류가 많아지기 때문
Binary file added docs/sk-lim19f/2024-02-04.JPEG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
79 changes: 79 additions & 0 deletions docs/sk-lim19f/2024-02-04.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
### 2.1.1 LAN

- LAN(Local Area Network)은 홈 네트워크용과 사무실용 네트워크처럼 비교적 소규모의 네트워크
- 먼 거리를 통신할 필요가 없어 스위치와 같이 비교적 간단한 장비로 연결된 네트워크

### 2.1.2 WAN

- WAN(Wide Area Network)로 먼 거리에 있는 네트워크를 연결하기 위해 사용
- 멀리 떨어진 LAN을 서로 연결하거나 인터넷에 접속하기 위한 네트워크가 WAN에 해당
- 직접 구축할 수 없는 범위의 네트워크이므로 대부분 통신사업자(KT, LGU+, SKB)로부터 회선을 임대해 사용

## 2.2 네트워크 회선

### 2.2.1 인터넷 회선

- 인터넷 접속을 위해 통신사업자와 연결하는 회선
- 통신사업자와 케이블만 연결한다고 인터넷이 가능한 것이 아니라 통신사업자가 판매하는 인터넷과 연결된 회선을 사용해야만 인터넷 접속이 가능

### 2.2.2 전용 회선

- 가입자와 통신사업자 간에 대역폭을 보장해주는 서비스를 대부분 전용 회선이라 부름
- 가입자와 접속하는 전송기술을 기반으로 구분
- 저속: 음성 전술 기술 기반
- 높은 속도가 필요하지 않을 때나 높은 신뢰성이 필요할 때 사용
- 이더넷 기반의 광 전송 기술이 신뢰할 정도의 수준으로 발전해 사용빈도가 줄고 있음
- 하지만 결제 승인과 같은 전문 전송을 위한 VAN(Value Added Network)사나 대외 연결에는 저속 회선을 사용하는 경우가 많음
- 원격지 전송 기술로 변환할 수 있는 라우터 필요
- 고속: 메트로 이더넷
- 광케이블 기반의 이더넷 사용

### 2.2.3 인터넷 전용 회선

- 인터넷 연결 회선에 대한 통신 대역폭을 보장해주는 상품

### 2.2.4 VPN

- VPN(Virtual Private Network)는 물리적으로 전용선이 아니지만 가상으로 직접 연결한 것 같은 효과가 나도록 만들어주는 네트워크 기술

#### 2.2.4.1 통신사업자 VPN

- 전용선은 연결 거리가 늘어날수록 비용이 증가
- 먼 거리와 연결하더라도 비용을 줄이기 위해 통신사업자가 직접 가입자를 구분할 수 있는 VPN 기술을 사용해 비용을 낮춤

## 2.3 네트워크 구성요소

### 2.3.1 네트워크 인터페이스 카드(NIC)

- 네트워크 인터페이스 카드는 컴퓨터를 네트워크에 연결하기 위한 하드웨어 장치
- 여러 네트워크에 동시에 연결되어야 하거나 더 높은 대역폭이 필요한 경우, 네트워크 인터페이스 카드를 추가로 장착
- 주요 역할
- 직렬화
- 전기적 신호를 데이터 신호 형태로 또는 데이터 신호 형태를 전기적 신호 형태로 변환
- MAC 주소
- 흐름제어
- 데이터 유실 방지를 위해 데이터를 받지 못할 때는 상대방에게 통신 중지를 요청

### 2.3.4 스위치

- 스위치(Switch)는 허브와 동일하기 여러 장비를 연결하고 통신을 중재하는 2계층 장비
- 허브와 스위치는 내부 동작 방식은 다르지만 여러 장비를 연결하고 케이블을 한곳으로 모아주는 역할은 같으므로 '허브'라는 용어를 공통적으로 사용
- 허브와 달리 MAC 주소를 이해할 수 있어 목적지 MAC 주소의 위치를 파악하고 목적지가 연결된 포트로만 전기신호를 보냄

### 2.3.5 라우터

- 라우터는 OSI 7계층 중 3계층에서 동작하면서 먼 거리로 통신할 수 있는 프로토콜로 변환
- 원격지로 쓸데없는 패킷이 전송되지 않도록 브로드캐스트와 멀티캐스트를 컨트롤하고 불분명한 주소로 통신을 시도할 경우, 이를 버림
- 정확한 방향으로 패킷이 전송되도록 경로를 지정하고 최적의 경로로 패킷을 포워딩

### 2.3.6 로드 밸런서

- OSI 7계층 중 4계층에서 동작
- 애플리케이션 프로토콜의 특징을 이해하고 동작하는 7계층 로드 밸런서를 별도로 ADC(Application Delivery Controller)라고 부름
- 4계층 포트 주소를 확인하는 동시에 IP 주소를 변경할 수 있음
- 대표 IP는 로드 밸런서가 갖고 로드 밸런서가 각 웹 서버로 패킷의 목적지 IP 주소를 변경해 보냄
- IP 변환 외에도 서비스 헬스 체크 기능이나 대용량 세션 처리 기능이 있음

### 2.3.7 보안 장비(방화벽/IPS)

- 방화벽은 OSI 7계층 중 4계층에서 동작해 방화벽을 통과하는 패킷의 3,4계층 정보를 확인하고 패킷을 정책과 비교해 버리거나 포워딩함
Binary file added docs/sk-lim19f/2024-02-05.JPEG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
61 changes: 61 additions & 0 deletions docs/sk-lim19f/2024-02-05.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# 3. 네트워크 통신하기

## 3.1 유니캐스트, 멀티캐스트, 브로드캐스트, 애니캐스트

- 유니캐스트
- 출발지와 목적지가 명확히 하나로 정해져 있는 1:1 통신 방식
- 브로드캐스트
- 목적지 주소가 모든으로 표기되어 있는 1:모든 통신 방식
- 주로 상대방의 정확한 위치를 알기 위해 사용
- 멀티캐스트
- 멀티캐스트 그룹 주소를 이용해 해당 그룹에 속한 다수의 호스트로 패킷을 전송하기 위한 1:그룹(멀티캐스트 구독 호스트)통신
- 애니캐스트
- 애니캐스트 주소가 같은 호스트들 중에서 가장 가깝거나 가장 효율적으로 서비스할 수 있는 호스트와 통신하는 방식
- 1:1 통신(목적지는 동일 그룹 내의 1개 호스트)
- 다수의 동일 그룹 중 가장 가까운 호스트에서 응답

## 3.2 MAC 주소

- 네트워크에 접속하는 모든 장비는 MAC 주소라는 물리적인 주소가 있어야 하고 이 주소를 이용해 서로 통신

### 3.2.1 MAC 주소 체계

- OUI: IEEE가 제조사에 할당하는 부분
- UAA: 각 제조사에서 네트워크 구성 요소에 할당하는 부분
- 네트워크 카드나 장비를 생산할 때 하드웨어적으로 정해져 나오므로 MAC 주소를 BIA(Burned-In Address)라고도 부름

## 3.3 IP 주소

- IP 주소를 포함한 다른 프로토콜 스택의 3계층 주소의 특징
- 사용자가 변경 가능한 논리 주소
- 주소에 레벨이 있음 / 그룹을 의미하는 네트워크 주소와 호스트 주소로 나눔

### 3.3.1 IP 주소 체계

- IP 주소는 32비트인 IPv4 주소, 128비트인 IPv6
- 네트워크 주소와 호스트 주소 두 부분으로 구분
- 네트워크 주소
- 호스트들을 모은 네트워크를 지칭하는 주소
- 호스트 주소
- 하나의 네트워크 내에 존재하는 호스트를 구분하기 위한 주소
- MAC 주소는 24비트씩 절반으로 나뉘지만 IP 주소의 네트워크 주소와 호스트 주소는 이 둘을 구분하는 경계점이 고정되어 있지 않음 (다른 주소 체계와 IP 주소 체계를 구분하는 가장 큰 특징)
- 필요한 호스트IP 개수에 따라 네트워크의 크기를 다르게 할당할 수 있는 클래스(Class)개념을 도입
- 클래스 개념은 다른 고정된 네트워크 주소 체계에 비해 주소를 절약할 수 있다는 장점이 있음
- A 클래스: 앞 옥텟의 주소가 0~127의 범위
- B 클래스: 앞 옥텟의 주소가 128~191의 범위
- C 클래스: 앞 옥텟의 주소가 192~223의 범위

### 3.3.2 클래스풀과 클래스리스

- 클래스 기반의 IP 주소 체계를 클래스풀(Classful)이라고 부름

#### 3.3.2.1 클래스리스 네트워크의 등장

- 기하급수적으로 늘어나는 IP 주소 요구를 감당하기에는 너무 부족
- IP 주소 부족과 낭비 문제를 해결하기 위해 3가지 보존, 전환전략을 만듬
- 첫 번째 단기 대책: 클래스리스, CIDR 기반의 주소체계
- 두 번째 중기 대책: NAT와 사설 IP 주소
- 세 번째 장기 대책: IPv6
- 클래스풀에서 한 개의 클래스 네트워크가 한 조직에 할당되면 아무리 비어있는 주소라도 IP를 분할해 다른 기관이 사용하도록 할 수 없음
- 이 문제를 해결하기 위해 클래스 개념 자체를 버리는데 이를 클래스리스라고 부름
- 클래스리스 네트워크에서는 별도로 네트워크와 호스트 주소를 나누는 구분자를 사용해야 하는데 이 구분자를 서브넷 마스크(Subnet Mask)라고 부름
Loading

0 comments on commit 4d12a4d

Please sign in to comment.