Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2월 1주차 회고 #16

Merged
merged 5 commits into from
Feb 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 22 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 @@ -80,4 +78,4 @@ PR은 N월 N주차에 형태에 맞춰서 작성해주세요!
style="width: 800px;">

<img src="./images/pr_search_sample_2.png"
style="width: 800px;">
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