본문 바로가기

네트워크

(26)
HTTP - 요즘에는 모든 것이 HTTP 위에서 동작합니다. 따라서 HTTP를 제대로 이해하고, 그 위에서 Spring Web MVC와 같은 웹 기술들을 공부해야 합니다. - HTTP는 HyperText Transfer Protocol의 줄임말입니다. 처음에는 HTML, TEXT 등을 전송하는 것으로 시작했는데, 지금은 모든 것(Image, 음성, 영상, 파일, JSON 등)을 HTTP에 담아서 전송합니다. 그리고 서버 간에 데이터를 주고 받을 때도 대부분 HTTP를 사용합니다. - HTTP의 역사를 간단하게 보면, HTTP 1.1이 1997년에 등장했는데, 지금 가장 많이 사용합니다. HTTP2와 HTTP3는 성능 개선에 초점이 맞춰져 있습니다. - HTTP 1.1과 HTTP2는 TCP 기반으로, HTTP3는 ..
OSI 7계층과 TCP/IP 4계층을 비교하여 설명하기 - OSI 모델은 네트워크 기술의 기본이 되는 모델입니다. 데이터의 송수신은 컴퓨터에서 컴퓨터로 데이터를 전송하는 것인데, 이 때, 컴퓨터의 내부에서는 여러 가지 일을 하는데, 그 일곱 개 계층이 바로 OSI 모델입니다. - OSI 모델의 7계층은 각각 물리 계층(1계층), 데이터 링크 계층(2계층), 네트워크 계층(3계층), 전송 계층(4계층), 세션 계층(5계층), 표현 계층(6계층), 응용 계층(7계층)으로 나뉩니다. - 각각의 계층이 하는 일은 다음과 같습니다. 물리 계층: 시스템 간의 물리적인 연결과 전기 신호를 변환 및 제어 데이터 링크 계층: 네트워크 기기 간의 데이터 전송 및 물리 주소를 결정 네트워크 계층: 다른 네트워크와 통신하기 위한 경로 설정 및 논리 주소를 설정 전송 계층: 신뢰할..
Oauth 1) Oauth란? - 특정 사이트를 이용하려고 하면 SNS 로그인과 같은 기능이 있습니다. 이러한 SNS 로그인 기능을 제공하는데 사용되는 기반 프로토콜을 Oauth라고 합니다. 2) Oauth의 정의 - 위키백과에 따르면 Oauth의 정의는 다음과 같습니다. Oauth는 인터넷 사용자들이 비밀번호를 제공하지 않고, 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는 접근 위임을 위한 개방형 표준이다. 예를 들어, 망고플레이트와 같은 어플리케이션은 사용자 인증을 위해 페이스북, 카카오톡, 애플의 사용자 인증 방식을 사용합니다. 이 때, 망고플레이트는 Oauth를 바탕으로 외부 서비스(페이스북, 카카오톡, 애플)의 자원에 접근할 수 ..
OSI 7계층 - 데이터 링크 계층 1) 이더넷 - 데이터 링크 계층은 네트워크 장비 간에 신호를 주고 받는 규칙을 정하는 계층인데, 그 규칙들 중 일반적으로 가장 많이 사용되는 규칙이 이더넷입니다 이더넷은 여러 컴퓨터가 동시에 데이터를 전송해도 충돌이 일어나지 않는 구조로 되어 있는데, 이처럼 이더넷에서 시점을 늦추는 방법을 CSMA/CD라고 합니다. - CSMA/CD에서 CS는 '데이터를 보내려고 하는 컴퓨터가 케이블에 신호가 흐르고 있는지 아닌지를 확인한다'는 규칙이고, MA는 '케이블에 데이터가 흐르고 있지 않다면 데이터를 보내도 좋다'는 규칙입니다. 마지막으로 CD는 '충돌이 발생하고 있는지를 확인한다'는 규칙입니다. - 지금은 효율이 좋지 않다는 이유로 CSMA/CD는 거의 사용하지 않고, 스위치라는 네트워크 장비를 사용합니다...
OSI 7계층 - 물리 계층 - 이번 글에서는 OSI모델의 1계층인 물리 계층에 대해 알아보겠습니다 1) 전기 신호 - 데이터는 전기 신호로 변환되어 네트워크를 통해 전송됩니다. 즉, 0과 1의 비트열을 전기 신호로 변환해야 합니다. 전기 신호의 종류에는 아날로그 신호와 디지털 신호가 있습니다. 아날로그 신호는 물결 모양을, 디지털 신호는 막대 모양을 갖고 있습니다. - 데이터, 즉 0과 1의 비트열 데이터는 데이터 송신 측에서 전기 신호로 변환되어 네트워크를 통해 수신 측 컴퓨터에 도착합니다. 수신 측 컴퓨터에서는 전기 신호를 0과 1의 비트열 데이터로 복원합니다. 2) 랜 카드 - 이 때, 0과 1의 정보는 컴퓨터 내부에 있는 랜 카드로 전송되고, 랜 카드가 0과 1을 전기 신호로 변환합니다. 컴퓨터는 메인 보드에 내장형 랜 카..
Restful 설계 원칙 - 이번 글에서는 Restful 설계 원칙에 대해서 다뤄보겠습니다. 1) URL Rules (1) 마지막에 / 포함하지 않는다 Bad http://api.test.com/users/ Good http://api.test.com/users (2) _(언더바) 대신 -(대시)를 사용한다 - 단, -(대시)의 사용도 최소한으로 설계한다 Bad http://api.test.com/users/post_comments Good http://api.test.com/users/post-comments (3) 소문자를 사용한다 Bad http://api.test.com/users/postComments Good http://api.test.com/users/post-comments (4) 행위(method)는 URL에 ..
base64 인코딩 1) Base64 인코딩이란? - Base64 인코딩이란 이진 데이터를 텍스트로 변환해서, 텍스트 데이터를 네트워크에서 데이터 변조나 손실 없이 쉽게 보낼 수 있도록 하는 인코딩 방식입니다. Base64는 3바이트 데이터를 4개의 문자로 표현합니다. 3바이트 데이터의 24비트를 네 가지 6비트 덩어리로 나누고, 각 덩어리의 6비트값에 출력 가능한 문자를 할당해 표현합니다. - 예를 들어, 012 라는 세 바이트를 인코딩하면, 00000000 00000001 00000010 을 6비트씩 000000 / 000000 / 000100 / 000010 끊을 수 있습니다. 그리고 base64 인코딩 표에 따라 각각에 A, A, E, C가 대응되므로, 012는 AAEC로 변환됩니다. 2) 왜 base64 인코딩을 ..
쿠키와 세션 - 이번 글에서는 HTTP와 같이 알아두어야 할 '쿠키(Cookie)'와 '세션(Session)'에 대해 알아보겠습니다. 1) 왜 쿠키와 세션인가? - HTTP는 비연결성(Connectionless)와 비상태성(Stateless)의 특징을 갖습니다. 이 의미는 HTTP는 1) 연결을 계속해서 유지하지 않고, 2) 요청과 응답의 상태를 저장하지 않는다 는 의미입니다. 하지만 실제로 클라이언트가 서비스에 로그인을 통해 접속한다면, 이후에 발생하는 해당 클라이언트의 요청을 식별해야 합니다. 즉, 사용자에게 매 요청마다 인증을 요구할 수 없으므로, 클라이언트의 상태(state)를 관리할 수 있는 수단이 필요합니다. 이러한 필요성에 따라 생겨난 것이 바로 쿠키(Cookie)와 세션(Session)입니다. 이 중에..
TCP vs UDP - TCP와 UDP는 모두 TCP/IP 모델의 '전송 계층'에 속하는 프로토콜입니다. 이 두 프로토콜은 서로 상반된 특징을 가지므로, 같이 비교해서 알아두면 좋습니다. - TCP와 UDP를 비교하면 다음과 같습니다. TCP UDP 특징 연결 지향, 신뢰 지향 비연결 지향, 비신뢰 지향 제어 흐름 제어, 오류 제어, 혼잡 제어 제어 없음 속도 느림 빠름 데이터 이름 세그먼트 데이터그램 활용 문서 다운로드 실시간 스트리밍 사용 프로토콜 HTTP 1.1, HTTP 2, HTTPs, FTP HTTP 3, DNS, DHCP - 각각의 항목에 대해 좀 더 자세히 설명드리겠습니다. 1) 특징 - TCP는 연결 지향, 신뢰 지향 프로토콜이고, UDP는 비연결 지향, 비신뢰 지향 프로토콜입니다. 이는 TCP와 UDP의 ..
google.com에 접속했을 때 일어나는 일 - 유저가 google.com에 접속했을 때, 다음과 같은 일이 일어납니다. 1) URL인 google.com이 입력되면, HTTP 요청 메시지를 생성합니다. ※ HTTP 요청 메시지란? - HTTP 요청 메시지는 HTTP 요청에 대한 정보를 담고 있는 메시지로서, 시작 라인, 헤더, 바디로 구성됩니다. 시작 라인에는 HTTP 메서드, URL, HTTP 버전이 포함됩니다. 헤더는 전달되는 바디 메시지에 대한 메타 데이터를 포함하고 있으며, Accept, Accept-Language, Content-Type, Content-Length 등이 포함됩니다. 바디는 전달되는 본문 데이터가 들어갑니다. 2) 도메인 주소인 google.com을 DNS Lookup을 통해서 해당 도메인 주소에 해당하는 IP 주소를 ..