[스터디] 컴퓨터 네트워크 1주차

minisoo·2023년 9월 12일
0

컴퓨터 네트워크와 네트워크 레이어

📗 컴퓨터 네트워크

컴퓨터와 같은 노드들이 통신 기술을 통해 그물망처럼 연결되어 통신하는 형태를 뜻하며 즉, 분산되어있는 컴퓨터를 통신망으로 연결한 것을 말한다.

📗 현대 컴퓨터 네트워크 데이터 전달 방식

현대에는 패킷 교환 방식을 사용하고 있다. 패킷 교환 방식은 미리 이동 경로를 정하지 않고, 데이터를 패킷이라는 작은 단위로 나누어 다중 노드로 구성된 네트워크를 통해 전송하는 개념

전송될 데이터는 네트워크를 통해 전송되기 전에 패킷으로 쪼개어지고, 각 패킷에는 고유 번호가 지정되어 있어서 네트워크를 거쳐 최종 수신지에 도착했을 때에 번호 순서대로 결합되어 원래 데이터로 완성된다.

패킷 교환 방식은 회선 교환 방식과 다르게 효율성을 위해 전송 당시 상황에 따라 매번 다른 경로로 갈 수 있게된다.

📗 라우터와 스위치란

패킷을 수신한 중간 노드가 패킷의 최종 목적지를 확인하고, 목적지까지 가는 다양한 경로 중 딱 그 상황에서 가장 최적이라고 판단되는 경로를 따라 패킷을 이동시키는 라우팅 작업을 해줘야 하는데 이러한 라우팅을 수행해주는 중간 노드를 '라우터'라고 한다. 라우터는 IP주소 기반으로 작동한다.

스위치 또한 목적지로 출발한 데이터를 중간에 적합한 경로로 스위칭해주는 역할을 한다. 스위칭은 MAC주소 기반으로 동작한다.

라우터와 스위치의 가장 큰 차이점은 기반 주소가 다르며, 라우터는 네트워크 사이의 데이터 전송을 수행하고, 스위치는 같은 네트워크 내부에서 데이터 전송을 수행한다.

📗 프로토콜과 프로토콜 스택

프로토콜 : 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙
프로토콜 스택 : 계층화된 구조로 모여 있는 프로토콜들의 집합, 묶음

📗 OSI 7 Layer

네트워크에서 통신이 일어나는 과정을 7단계로 나눈 것
물리 계층 [1계층]
상위 계층으로부터 받아온 데이터를 전기적 신호로 변환해 전달하는 역할
통신 단위는 비트이며 0과 1로 나타내어지며, 전기적으로는 On, Off상태
데이터 링크 계층 [2계층]
물리계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보를 전달을 수행할 수 있도록 도와주는 역할
MAC 주소로 통신하며, 통신 단위는 프레임
네트워크 계층 [3계층]
IP주소를 부여하고 목적지까지 최적의 경로를 설정하는 라우팅역할을 하는 계층으로 통신 단위는 패킷
전송 계층 [4계층]
발신지에서 목적지간에 신뢰성 있는 데이터를 주고 받을 수 있게 해주는 역할, 오류 검출 및 복구, 흐름 제어와 중복 검사등을 수행
대표적인 프로토콜은 TCP, UDP가 있음
세션 계층 [5계층]
통신 장치 간의 연결을 유지하기 위한 구조를 제공하고, 이를 처리하기 위해 프로세스들의 논리적인 연결을 담당
TCP/IP 세션 연결의 설정과 해제, 세션 메세지 전송등의 기능 수행
표현 계층 [6계층]
응용계층에서 사용되는 데이터의 인코딩과 디코딩 및 캡슐화, 압축 등의 기능을 수행
데이터 암호화/복호화 기능도 수행
응용 계층 [7계층]
사용자와 가장 밀접한 계층으로 사용자와 직접적으로 상호작용하는 모든 응용프로그램이 포함됨
대표적인 프로토콜은 HTTP, FTP가 있음

📗 TCP/IP란

패킷 통신 방식의 인터넷 프로토콜인 IP, 전송 조절 프로토콜인 TCP로 이루어진 프로토콜
IP 라우팅을 이용해 목적지에 도달하며 TCP의 특성을 활용해 송신자, 수신자의 논리적 연결 생성 및 신뢰성을 유지할 수 있도록 하는걸 의미한다.
TCP/IP는 네트워크 인터페이스 계층, 인터넷 계층, 전송 계층, 애플리케이션 계층으로 총 4계층으로 이루어져있다.
네트워크 인터페이스 계층 [1계층]
물리적으로 데이터가 네트워크를 통해 어떻게 전송되는지를 정의
전송 주소: MAC
데이터 단위: 프레임
인터넷 계층 [2계층]
네트워크상 최종 목적지까지 정확하게 연결되도록 연결성을 제공
단말 구분을위해 논리적 주소인 IP를 할당
전송 주소: IP
데이터 단위: 패킷
전송 계층 [3계층]
통신 노드 간의 연결 제어 및 자료 송수신을 담당
전송 주소: Port
데이터 단위: 세그먼트
응용 계층 [4계층]
응용프로그램들이 데이터를 교환하기 위해 사용되는 프로토콜
데이터 단위: 데이터/메세지

📗 OSI 7 Layer 또는 TCP/IP과 같은 프로토콜 계층화의 장점

서로 독립적인 모듈화 가능
복잡한 작업을 여러 개의 작고 단순한 작업들로 나눌 수 있게 됨

📗 웹 개발시 레이어드 아키텍처 적용 경험

controller-service-repository
model-view-template
패턴

📗 사용해봤던 프로토콜

이전에 메일 전송 기능 구현시 SMTP라는 이메일 전송 프로토콜 사용
SMTP 프로토콜은 서로 다른 이메일 시스템 간의 메시지 전달 및 중계를 가능하게 해주며, TCP/IP를 기반으로 동작

HTTP 프로토콜

📗 HTTP 프로토콜

인터넷 상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 통신 규약, 약속
애플리케이션 레벨로 TCP/IP 위에서 작동

📗 HTTP 요청/응답 모델


Request
시작라인: HTTP 메서드, 요청 대상, HTTP 버전 명시
Response
시작라인: HTTP 버전, 상태코드 등 명시
헤더: HTTP 전송에 필요한 모두 부가정보
바디: 실제 전송할 데이터

📗 HTTP 메서드

클라이언트와 서버 사이에 이루어지는 요청과 응답 데이터를 전송하는 방식
GET: 리소스 조회
POST: 요청 데이터 처리, 주로 등록에 사용
PUT: 리소스 전체 변경, 해당 리소스가 없으면 생성
PATCH: 리소스 부분 변경
DELETE: 리소스 삭제

📗 HTTP 메서드중 GET, POST의 차이

GET
서버로부터 어떤 리소스 정보를 요청하기 위해 사용됨
쿼리스트링을 사용해 서버로 파라미터 전송
캐시 가능
요청이 브라우저 히스토리에 남음
보안에 취약함
멱등성(서버에 동일한 요청을 여러번 전송해도 동일한 응답이 돌아옴)을 보장
POST
리소스를 생성하거나 업데이트하귀 위해 사용됨
데이터를 HTTP 메시지 body 부분에 담아서 서버로 보냄
캐시 불가능
요청이 브라우저 히스토리에 남지않음

📗 HTTP 메서드중 PUT, PATCH의 차이

PUT
리소스 전체 수정
해당 자원이 없다면 리소스를 생성한다.
PATCH
리소스 부분 수정

📗 HTTP 상태코드

클라이언트가 보낸 요청의 처리 상태를 응답해서 알려주는 기능
201 Created: 요청 성공하여 새로운 리소스가 생성됨
302 Found: 클라이언트가 요청한 리소스가 헤더에 주어진 URL에 일시적으로 리다이렉션됨
400 Bad Request: 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음
500 Internal Server Error: 서버 내부 문제로 오류 발생

📗 HTTP 헤더

HTTP 전송에 필요한 모든 부가정보
Content-Type: 표현 데이터의 형식 예) application/json, image/png
Referer: 이전 웹 페이지 주소
Server: 요청을 처리하는 ORIGIN 서버의 소프트웨어 정보
Accept-Encoding: 클라이언트가 선호하는 압축 인코딩

📗 HTTP 무상태성이란

HTTP는 무상태 프로토콜로 클라이언트의 상태를 보존하지 않음
로그인한 회원이 페이지 이동했을 때 해당 클라이언트가 회원인지 알 수 없기때문에 또 로그인 페이지를 보여줄 수 있음
이러한 무상태 환경에서는 일반적으로 브라우저 쿠키와 서버 세션등을 사용해서 상태 유지
클라이언트가 정보를 갖고 있기 때문에 서버의 수평확장에 유리하지만 서버 요청시 데이터를 많이 사용한다는 단점이 있음

📗 HTTP Keep-Alive

HTTP에서 persistent connection을 맺는 기법 중 하나
persistent connection: 요청이 처리된 후에도 TCP 연결을 유지하는 것
3-way handshake를 매 요청마다 맺을 필요가 없기 때문에 네트워크 혼잡, 네트워크 비용, 지연시간 감소와 같은 장점이 있음

📗 HTTP 파이프라이닝

응답을 기다리지 않고 단일 TCP 연결을 통해 여러 HTTP 요청을 보내는 기술
클라이언트-서버 간의 왕복 시간으로 인한 대기 시간을 줄일 수 있음

📗 HTTP/1.1, HTTP/2, HTTP/3의 특징

HTTP/1.1

  • Persistent Connection 추가: HTTP/1.0의 특징인 한 연결당 하나의 요청 처리, 매번 연결과 해제 반복으로 RTT가 오래걸린다는 단점을 보완하여 한번 TCP 초기화 한 이후에 keep-alive라는 옵션을 통해 일정 시간동안 연결상태를 유지할 수 있게 됨
  • Pipelining 추가: TCP 특성상 요청 후 응답을 기다려야하는 문제를 보완하여 클라이언트는 앞 요청의 응답을 기다리지 않고 요청 전송, 서버는 요청이 들어온 순서대로 응답

HTTP/2

  • Multiplexing: HTTP 헤더 메세지를 바이너리 형태의 프레임으로 나누고 하나의 커넥션으로 동시에 여러개의 메세지 스트림을 응답 순서에 상관없이 주고 받음
  • Server Push: HTML문서 상에 필요한 리소스를 미리 클라이언트에게 보냄
  • HTTP 헤더 데이터 압축: 이전 Header의 내용과 중복되는 필드는 재전송 하지 않도록 하여 데이터 절약 및 헤더를 압축하여 전송

HTTP/3

  • 기존 TCP 기반 위에서 동작하는 HTTP를 UDP 기반인 QUIC 프로토콜을 사용

[출처]

네트워크
패킷교환방식과 라우터
라우터와 스위치
프로토콜
OSI 7계층
TCP/IP 이해하기
TCP/IP란
TCP/IP 프로토콜
프로토콜 계층화
프로토콜 계층화 장점
HTTP 프로토콜
HTTP 메서드
HTTP 메서드
HTTP 무상태
HTTP Keep-Alive
HTTP 1.1/2/3

profile
코딩하는 돌멩이 👻

0개의 댓글