TCP는 데이터를 그냥 보내고 끝내는 방식이 아니다.보낸 데이터가 잘 도착했는지 확인하고, 문제가 생기면 다시 보내면서 통신의 신뢰성을 높이는 전송 계층 프로토콜이다.지난 글에서 TCP는 데이터를 보내기 전에 연결을 만든다고 정리했다.그런데 연결을 만들었다고 해서 데이
TCP는 데이터를 보내기 전에 먼저 “연결”을 만든다.여기서 말하는 연결은 물리적으로 선을 새로 꽂는다는 뜻은 아니다.클라이언트와 서버가 서로 통신할 준비가 되었는지 확인하고, 데이터를 주고받을 상태를 맞추는 과정에 가깝다.UDP는 일단 데이터를 던져놓고 시작하는 느낌
전송 계층은 호스트 안에서 어떤 프로그램끼리 데이터를 주고받을지 정리해주는 계층이다.이전 글에서 포트는 “이 컴퓨터 안의 어떤 프로세스로 보낼 것인가”를 구분하기 위한 번호라고 정리했다.그런데 포트만 안다고 통신이 끝나는 것은 아니다.데이터를 보낼 때 이런 문제들이 남
IP 주소는 네트워크에서 호스트를 찾기 위한 주소다.여기서 호스트는 쉽게 말해 네트워크에 연결된 컴퓨터, 서버, 스마트폰 같은 장비라고 볼 수 있다.그런데 실제 통신은 호스트까지만 도착한다고 끝나는 게 아니다.내 컴퓨터가 어떤 서버에 요청을 보낸다고 해보자.IP 주소를
스위치는 같은 네트워크 안에서 MAC 주소를 보고 프레임을 전달했다.하지만 우리가 접속하는 서버가 항상 내 집, 내 회사, 내 와이파이 안에 있는 것은 아니다. 대부분의 웹 서버는 내 네트워크 바깥에 있다. 이때 필요한 장비가 라우터다.라우터는 간단히 말하면 서로 다른
IP 주소, 서브넷 마스크, 기본 게이트웨이, DNS 서버 주소.이 정보들이 있어야 내 컴퓨터는 이런 판단을 할 수 있다.“내 IP는 무엇인가?”“상대방이 나와 같은 네트워크에 있는가?”“다른 네트워크라면 어디로 보내야 하는가?”“도메인 이름은 어떤 IP 주소로 바꿔야
컴퓨터가 네트워크에 연결된다는 건 단순히 랜선을 꽂거나 와이파이에 연결했다는 뜻만은 아니다.네트워크에 제대로 참여하려면 내 컴퓨터는 최소한 몇 가지 정보를 알고 있어야 한다.내 IP 주소는 무엇인지,내가 속한 네트워크의 범위는 어디까지인지,다른 네트워크로 나가려면 누구
내 컴퓨터에도 IP 주소가 있고, 스마트폰에도 IP 주소가 있고, 집에 있는 태블릿에도 IP 주소가 있다.그럼 이 장비들이 전부 인터넷에서 직접 사용할 수 있는 고유한 IP 주소를 하나씩 가지고 있는 걸까?결론부터 말하면 그렇지 않다.우리가 집이나 회사에서 사용하는 대
IP 주소는 네트워크에서 목적지를 찾기 위한 주소다.그런데 IP 주소를 그냥 하나의 숫자처럼 보면 조금 헷갈린다.예를 들어 192.168.10.25라는 주소가 있다고 해보자.처음 보면 이 주소 전체가 한 대의 컴퓨터를 가리키는 것처럼 보인다.하지만 실제로 IP 주소는
같은 LAN 네트워크 안에서는 이더넷 프레임이 오가고, 스위치는 MAC 주소 테이블을 보면서 프레임을 어느 포트로 보낼지 판단했다.여기까지는 “우리 동네 안에서 물건을 배달하는 방법”에 가깝다.그런데 실제 인터넷 통신은 대부분 같은 LAN 안에서 끝나지 않는다.내 컴퓨
스위치는 같은 LAN 안에서 MAC 주소를 보고 프레임을 전달하는 장비다.지난 글에서는 스위치가 MAC 주소 테이블을 만들고, 목적지 MAC 주소를 기준으로 포워딩, 플러딩, 필터링을 한다는 흐름을 정리했다. 그런데 여기서 한 가지 문제가 생긴다.스위치에 연결된 장비가
허브는 들어온 신호를 모든 포트로 뿌렸다.누가 받아야 하는지 판단하지 않고, 일단 모두에게 보내는 방식이었다.그래서 같은 네트워크 안에 장비가 많아질수록 불필요한 전달이 많아지고, 충돌 문제도 생길 수 있었다.스위치는 이 문제를 줄이기 위해 등장한 장비라고 볼 수 있다
이더넷을 공부하면서 알게 된 건, 같은 LAN 안에서 데이터를 주고받으려면 결국 프레임이라는 형식이 필요하다는 점이었다.그런데 여기서 질문이 하나 생긴다.프레임을 만들었다고 해서 끝일까?아니다.프레임은 결국 실제 네트워크 장비를 지나 목적지까지 이동해야 한다. 이때 같
네트워크를 공부하다 보면 결국 이런 질문을 만나게 된다.“내 컴퓨터에서 보낸 데이터는 같은 네트워크 안의 다른 장비를 어떻게 찾아갈까?”지난 글에서는 0과 1이 전기 신호, 빛 신호, 전파 같은 물리적인 신호로 바뀌어 이동한다는 이야기를 했다.그런데 신호가 이동할 수
지난 글에서 네트워크를 계층으로 나누어 보고, 데이터가 아래 계층으로 내려가면서 헤더가 붙는 과정을 캡슐화라고 정리했다.그런데 한 가지 의문이 남는다.컴퓨터 안에서 데이터는 결국 0과 1이다.그렇다면 이 0과 1은 실제 네트워크 선을 타고 어떻게 이동할까?여기서 등장하
네트워크 통신은 생각보다 많은 약속들이 함께 움직인다.브라우저에서 서버로 요청을 보낸다고 할 때, 그 안에는 단순히 “데이터를 보낸다”는 말로 끝나지 않는 여러 단계가 숨어 있다.웹에서는 HTTP가 필요하고, 데이터를 잘게 나누고 순서를 맞추는 데는 TCP가 관여하고,
네트워크는 결국 노드와 노드가 연결되어 메시지를 주고받는 구조다.웹 서비스 관점에서는 클라이언트가 서버에 요청을 보내고, 서버가 그 요청에 대한 응답을 돌려주는 구조로 볼 수 있다.그런데 여기서 한 가지 의문이 생긴다.클라이언트와 서버가 서로 메시지를 주고받는다고 했는
네트워크를 공부하려고 하면 처음부터 어려운 용어들이 많이 나온다.서버, 클라이언트, 라우터, 스위치, 주소, 포트, 계층 같은 말들이 한꺼번에 등장한다.그런데 처음부터 이 용어들을 전부 외우려고 하면 오히려 전체 그림이 잘 안 잡힌다.그래서 나는 네트워크를 먼저 아주
웹 개발을 하다 보면 우리는 자연스럽게 이런 문장을 많이 사용한다.“API 요청을 보낸다.”“서버에서 응답을 받는다.”“프론트에서 백엔드로 요청이 간다.”“배포했는데 접속이 안 된다.”“서버는 살아 있는데 왜 안 되지?”처음에는 이 말들이 꽤 단순하게 느껴졌다.브라우저
SassScript 는 CSS 의 한계를 극복하기 위해 도입된 확장 문법으로, 프로그래밍 언어와 유사한 연산, 변수, 함수 기능을 제공합니다.Sass 는 7가지의 주요 데이터 타입을 지원하며, type-of 함수를 통해 확인할 수 있습니다.변수는 $ 기호를 사용하여 선