## 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>