## Networking
- 컴퓨터 네트워크 = 컴퓨팅 디바이스의 집합
- 이때 네트워크 상의 기기를 **node** 혹은 **host**라고 부름
- 전선과 케이블을 이용한 유선 연결과 전파나 적외선 신호를 이용한 무선 연결이 있음
- 유형 예시
- Client-Server 모델 : 웹서버에 대표적으로 쓰이는 방식
![[clent-server_interaction.png|w70|center]]
- P2P 모델 : peer, 클라이언트인 동시에 서버 역할도 하는 구조 e.g.아프리카티비
<br>
#### 네트워크의 종류
- LAN(local-area network) : 비교적 가까운 지역의 적은 수의 컴퓨터를 연결함
- WAN(wide-area network) : 두 개 이상의 LAN을 연결
- Internet : interconnected network, 전세계 단위의 네트워크 연결
![[WAN.png|w70|center]]
<br>
#### Packet Switching
- 공유 통신 회선을 통해 데이터를 전송하는 효율성을 향상시키기 위해 메시지는 고정된 크기의 번호가 부여된 **패킷(Packit)** 으로 구분됨
- 패킷은 네트워크를 통해 개별적으로 목적지까지 전송되고, 이 패킷이 목적지에서 모이면 원래 메시지로 다시 어셈블함 = 패킷 스위칭
![[packet_switching.png|w80|center]]
<br>
#### 네트워크 프로토콜
- 국제 표준화 기구 ISO에서 OSI(Open System Interconnection) 7계층으로 네트워크 통신 과정을 정의함
- 실제 네트워크 설계 및 구현에서는 OSI 7계층 모델을 간소화하여 4개의 계층으로 나눔
- Network Access Layer, Internet Layer, Transport Layer, Application Layer
**다양한 프로토콜**
- Low-Level Protocols
- Ethernet : 컴퓨터 네트워크에서 가장 널리 사용되는 초기 네트워크 프로토콜 중 하나
- TCP/IP : low level의 네트워크 통신을 지원하는 일련의 프로토콜 및 유틸리티 프로그램
- High-Level Protocols
- SMTP : Simple Mail Transfer Protocol
- FTP : File Transfer Protocol
- Telent
- **HTTP** : Hypertext Transfer Protocol
![[network_protocols.png|w80|center]]
<br>
#### 네트워크 주소
- **hostname** : 인터넷 상의 특정 컴퓨터를 특정하기 위한 unique 식별자 e.g. cs.knu.ac.kr
- computer name(cs)과 domain name(knu.ac.kr)으로 구성됨
- **IP 주소** : 네트워크 소프트웨어가 쓰는 식별자, hostname과 매칭됨 e.g. 155.230.128.93
![[IP_address.png|w80|center]]
- **Domain Name System(DNS)** : hostname을 숫자 형태의 IP 주소로 변환하는데 사용됨
<br>
## World Wide Web(WWW)
- 웹 : 네트워크를 이동 수단으로 사용하여 정보를 교환하는 소프트웨어와 결합된 **분산된 정보의 인프라**
- 웹 페이지 : 텍스트, 이미지, 그래픽 및 프로그램과 같은 다양한 종류의 데이터를 포함하거나 참조하는 문서
- 웹사이트 : 관련 웹 페이지의 모음, 사용자가 원하는 대로 "이동"할 수 있도록 함
- 웹 브라우저 : 사용자가 원하는 웹 페이지에 대한 요청을 보내고 응답이 도착하면 화면에 표시하는 소프트웨어
- e.g. 크롬, 웨일, 사파리
- 웹 서버 : 웹 요청에 응답하는 컴퓨터
![[retrieving_web_page.png|w80|center]]
- URL(Uniform Resource Locator)
- web address는 URL의 핵심 부분으로, 전 세계 어디에 저장된 모든 페이지 중에서 원하는 페이지를 고유하게 식별함
- web address 예시 : http://www.something.ac.kr/index.html (규약+호스트+도메인+요청하는페이지)
- HTML, CSS : 웹페이지를 만드는 언어
- Search Engine : 다른 웹사이트를 찾을 수 있게 도와주는 웹사이트 e.g. 구글, 네이버
- 수많은 웹사이트에 대한 정보를 포함하는 데이터베이스를 검색해서 후보군 사이트 목록 생성함
- 좋은 검색 엔진은 데이터베이스를 최신 상태로 유지하고 키워드를 웹 페이지의 내용과 매칭시키는 기술을 가지고 있음
<br>
> **페이지랭크(PageRank)**
>
> 페이지랭크는 구글 검색 엔진에서 사용되는 알고리즘으로, 웹 페이지의 상대적인 중요성을 측정하는 데 사용된다.
> 웹 페이지 간의 링크 구조를 기반으로 각 페이지의 중요성을 계산하고, 중요한 페이지로부터의 링크가 더 많을수록 해당 페이지의 랭크가 높아진다.
> 페이지랭크 알고리즘은 마코프 체인의 개념을 사용하여 각 페이지 간의 전이 확률을 계산하는데 이를 통해 각 페이지의 중요성을 결정한다.
<br>
## Cryptography(암호학)
- 암호화를 통해 중요한 정보를 안전하게 유지하기 위한 기술적 접근 방법
- Encryption(암호화) : 일반 텍스트 형태의 plaintext를 해석하기 어려운 ciphertext 로 변환하는 과정
- Decryprion(복호화) : 암호문을 다시 일반 텍스트로 변환하는 과정
###### Substitution Cipher(대체 암호)
- 대표적인 예제 : 카이사르 시저 암호
- 메세지의 알파벳을 특정 숫자만큼 이동해서 작성하는 방식
- Cryptanalysis가 상대적으로 쉬움 (Cryptanalysis, 암호나 키를 알지 못한 채 메시지의 평문 버전을 알아내려는 시도)
###### Transposition Cipher
- 대표적인 예제 : 경로 암호(route cipher)
- 메시지를 문자의 그리드로 배치하고 그리드를 통과하는 경로를 지정하여 정보를 암호화하는 전치 암호
###### Public-Key Cryptography
- 앞서 설명한 방식들은 암호키를 송신자와 수신자가 공유하는 과정에서 해킹이 일어나기 쉬움
- 공개 키 암호에서 각 사용자는 수학적으로 관련된 키 쌍을 가짐
- 키 쌍의 관계가 매우 복잡해서 하나의 키로 암호화된 메시지는 해당 파트너 키로만 암호 해독 가능
- 하나는 public key로 자유롭게 배포할 수 있고, 다른 하나는 private key임 (e.g. 계좌번호와 은행 비밀번호)
###### Digital Signature
• 디지털 서명은 보내는 사람에게 고유하고 위조하기 매우 어려운 추가 데이터를 메시지에 추가하여 문서에 "서명"하는 방법임
• 디지털 서명을 통해 수신자는 메시지가 정말로 명시된 발신자로부터 발신된건지, 전송 중에 제 3자에 의해 변경되지 않았는지 확인할 수 있음
<br>
<br>
<br>
<br>