목록CS (20)
신비한 개발사전
HTTP 통신은 무상태성이다—클라이언트와 서버가 대화를 완료하고 HTTP 연결을 끊으면 서버는 더이상 클라이언트에 대해 알고 있지 않는다. 따라서 로그인한 사용자 정보 등의 상태를 따로 저장해야 하는데, 이때 쿠키나 세션 같은 기술을 사용한다. 쿠키 (Cookie)쿠키는 클라이언트의 로컬 환경에 저장하는 텍스트 정보로, 각 브라우저별로 쿠키를 저장한다. (크롬에서 저장한 쿠키는 파이어폭스에서 사용할 수 없다) HTTP 요청에 쿠키가 들어있으면 서버는 해당 쿠키의 내용을 읽어 클라이언트에 대한 정보를 알 수 있다. 쿠키는 다음과 같은 특징을 갖고 있다:저장 형태: 쿠키의 데이터는 key=value 형식으로 저장된다 (예: name=Bob)전송 방식: 매 HTTP 요청에 자동으로 실려서 전송된다쿠키가 파기되..
SSL(Secure Sockets Layer)과 TLS(Transport Layer Security)는 인터넷 상에서 데이터를 암호화하고 인증하기 위한 프로토콜이다. 둘 다 HTTPS의 기반이 되며, TLS는 SSL의 개선된 버전으로 주로 사용된다. TLS는 데이터를 암호화하여 중간에서 탈취당하더라도 해독이 불가능하게 하고, 서버와 클라이언트 간에 보안 채널을 설정하여 통신의 기밀성과 무결성을 보장한다. 대칭키 암호화대칭키 암호화는 데이터를 암호화하고 복호화할 때 동일한 "비밀 키"를 사용하는 방식이다. 송신자와 수신자가 같은 키를 사용하기 때문에 데이터 전송 속도가 빠르고 처리 효율이 높다. 대칭키 암호화는 속도가 빠르지만, 키를 송신자와 수신자가 모두 알아야 하므로 키를 안전하게 전달하는 문제가 있다..
DNS(Domain Name Server)는 웹사이트의 도메인 이름(http://www.site.com 부분)을 컴퓨터가 이해할 수 있는 IP 주소로 변환하는 일종의 전화번호부 같은 시스템이다. 192.0.2.1 같은 IP 주소는 사람이 쉽게 외울 수 있는 형식이 아니다. 때문에 숫자 대신 우리가 알아보기 쉬운 알파벳 단어로 이루어진 도메인 이름을 사용할 수 있게 하고, DNS는 이 도메인 이름을 IP 주소로 변환해서 리소스에 접근할 수 있게 해준다. DNS의 동작 방식사용자가 도메인 이름을 입력: 사용자가 브라우저에 도메인 이름(예: http://www.example.com)을 입력한다.로컬 DNS 캐시 확인: 브라우저와 운영체제는 최근에 방문한 사이트의 IP 주소를 캐시하고 있으므로, 우선 캐시에 해..
HTTP는 인터넷 상에서 웹 클라이언트(브라우저 등)와 웹 서버 간 데이터를 전송할 때 사용하는 프로토콜이다. 크롬이나 파이어폭스 같은 웹 브라우저 애플리케이션이 HTTP 프로토콜을 통해 서버와 웹 페이지, 이미지, 영상 등의 데이터를 주고 받는다. HTTP/0.9태초의 버전이지만 당시에는 따로 버전 라벨이 없었기 때문에 나중에 0.9를 붙여줬다. 한줄짜리 GET 요청만 썼었고, 리소스 주소도 프로토콜, 서버, 포트 번호가 필요 없었기 때문에 전체 주소를 쓰지 않았다.응답도 굉장히 간단하게 요청한 파일 그 자체만 들어있었고, HTML 파일만 전송 가능했다. 헤더, 상태, 에러코드의 개념이 없었다. 문제가 발생하면 상황을 알리는 특수한 HTML 파일이 생성되는 방식이었다. 요청ㅡ응답 예시:요청:GET /m..
컴퓨터 프로토콜이란?기기들이 통신할 때 통신을 허용할지, 연결된 기기에게 무엇을 요청할지, 데이터를 어떤 형식으로 보낼지 등의 소통이 오가는데, 이때 사용하는 것이 프로토콜이다. 프로토콜은 컴퓨터 네트워크의 노드들이 서로와 통신하기 위해 따르는 규칙들이다. 우리가 소통할 때 상대의 메세지에 적절한 응답을 주고 받는 것처럼 프로토콜도 메세지 포맷, 전달 순서, 취할 액션 등이 규정되어 있다. 소통 방식에 따라 다양한 프로토콜이 존재한다. TCP/IPTCP/IP는 패킷 통신의 규약인 IP(Internet Protocol)와 전송 조절에 대한 규약인 TCP(Transmission Control Protocol)를 합쳐서 부르는 프로토콜 스위트(같은 통신 목적에 사용되는 여러 프로토콜의 집합)이자 계층화된 통신..
컴퓨터 네트워크는 서로 통신하고 데이터를 주고 받는 기기들로 이루어진 연결 시스템이다. 컴퓨터 네트워크의 기기는 PC뿐만 아니라 스마트폰, 서버, 프린터 등 유선이나 무선 네트워크에 연결해 통신할 수 있는 모든 기기들을 뜻하며, 다른 말로 노드(node)라고도 부른다. 노드들은 커뮤니케이션 링크(communication link)라고 부르는 연결고리로 연결돼있는데, 이 링크를 타고 데이터가 전송된다. 네트워크 구조Network edge: 말 그대로 네트워크의 가장 끝쪽에 해당하는 영역으로, 여기에 연결돼있는 노드를 host 또는 end system이라고 한다. End system은 즉 네트워크에 연결하는 단말기인데, 우리가 서비스를 제공할 때 사용자를 end user라고 부르는 것과 같은 맥락이다. Ac..
인코딩과 암호화는 둘 다 데이터를 다른 형태로 바꿀 때 사용하는 기술들이지만, 그 방식과 목적이 다르다. 인코딩이란?인코딩은 전송이나 저장에 용이한 형태로 바꾸는 등, 환경의 요건에 맞는 형식으로 데이터를 변형시키기 위해 사용한다. 인코딩된 데이터는 별도의 제약 없이 되돌리는 것(디코딩하는 것)이 가능하고, 널리 알려진 방식으로 데이터를 바꾼 것이기 때문에 일반적으로는 어떤 포맷으로 인코딩했는지 쉽게 알거나 공유할 수 있다. 그렇기 때문에 데이터의 보안성을 높이기 위한 수단은 아니다. 자주 보이는 인코딩 알고리즘으로 Base64, URL 인코딩, ASCII 또는 유니코드 등이 있다. 암호화란?암호화는 외부인으로부터 데이터를 보호하기 위해 취하는 수단이다. 제3자가 마음대로 데이터에 접근할 수 없도록 암호..
HTTP(HyperText Transfer Protocol)는 컴퓨터와 컴퓨터가 서로 대화할 때 사용하는 프로토콜 중 하나다. 네트워크로 연결된 컴퓨터끼리 데이터도 주고 받을 수 있는데, 우리가 인터넷(웹)에서 웹사이트에 접속하는 것도 이 과정을 거쳐 이루어진다. 웹에 연결해 데이터를 요청하는 쪽이 클라이언트, 요청 받은 데이터를 보내주는 쪽이 서버다. HTTP 프로토콜을 통해 클라이언트와 서버간에 전송되는 데이터는 암호화되지 않은 순수 텍스트의 형태를 하고 있다. 만약 통신 중간에 난입하는 공격자가 있다면 통신되고 있는 내용을 읽을 수 있을 뿐만 아니라 가로채거나 조작할 수도 있다. 로그인 같은 중요한 통신을 하는 경우에는 사용자의 로그인 정보가 공격자에게 넘어갈 수 있다. 때문에 이런 보안성 문제를 ..