728x90
Network
10

예시로 이해하는 CSRF Attack

다음과 같이 어떤 은행에 1000원을 이체하는 GET 요청이 있다고 해보자. GET http://netbank.com/transfer.do?acct=PersonB&amount=1000 HTTP/1.1 한 해커는 위와 같은 요청을 수정하여 다음과 같이 자신의 계좌로 이체하도록 만들 수 있다. GET http://netbank.com/transfer.do?acct=AttackerA&amount=1000 HTTP/1.1 그리고 이렇게 수정한 링크를 하이퍼링크로 삽입하여 여러 사용자들에게 메일을 보낼 수 있게된다. Read more! 이런 메일을 받은 어떤 사람이 은행 계정에 로그인된 상태로 클릭하게되면 해커의 계좌로 이체하게 되는 것이다. POST 요청으로 이체를 수행하는 은행은 위와같이 태그를 사용할 수 없..

Network 2024.01.10

HTTP 버전별 특징

HTTP/1.0 기본적으로 한 연결당 하나의 요청을 처리한다. 서버로부터 파일을 가져올 때마다 3-way handshaking이 계속 일어나 RTT가 증가한다. RTT: 패킷이 목적지에 도달하고 다시 돌아오기까지 걸리는 왕복 시간 RTT의 증가를 해결하기 위한 방법으로 "이미지 스플리팅, 코드 압축, 이미지 Base64 인코딩"이 있다. HTTP/1.1 keep-alive라는 옵션이 적용되어 한 번의 3-way handshaking으로 여러 파일을 송수신할 수 있다. HOL(Head Of Line) Blocking: 같은 큐에 있는 패킷 중 첫 번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상 헤더에 많은 메타데이터가 포함되어 무겁다 HTTP/2 여러 개의 스트림을 사용하여 송수신할 수 있는 멀티플렉..

Network 2023.05.25

[웹 브라우저의 동작] 4. 프로토콜 스택

이전에 설명했듯이 웹 서버에 메시지를 송신하기위해서는 OS의 내부에 있는 "프로토콜 스택"에 의뢰한다고 했다. 이제 이 "프로토콜 스택"에서 데이터를 송ㆍ수신하는 동작을 알아보겠다. 데이터 송ㆍ수신의 4단계 우선 데이터 송ㆍ수신의 전체적인 순서와 단계를 알아보겠다. 클라이언트와 서버들끼리 데이터를 송ㆍ수신하기 위해서는 클라이언트, 서버 각각에는 소켓을 만들고 서로 파이프를 연결하게 된다. 파이프를 연결하게되서야 서로 데이터를 송ㆍ수신하고 연결을 끊는다. 이 단계는 다음과 같다. 소켓을 만든다. (소켓 생성) 서버측의 소켓에 파이프를 연결한다. (접속) 데이터 송ㆍ수신(송ㆍ수신) 파이프 분리 및 소켓 말소(연결 끊기) 먼저 서버 측에서 소켓을 만들고 소켓에 클라이언트가 파이프를 연결하기를 기다린다. 그러면..

Network 2021.05.16

[웹 브라우저의 동작] 3. DNS

전체적인 흐름 브라우저 실행 URL 입력 브라우저가 URL을 조사 후 리퀘스트 메시지 생성 DNS 서버에 IP 주소 조사 신청 OS에 웹 서버로 송신해주라고 의뢰 웹 서버 수신 이전의 "2. IP"글에서 리졸버 내부에서 어떻게 작동하는지 알아보았었다. 그 중에서 DNS 서버가 메시지를 받아서 답을 찾아가는 과정은 생략했었다. 그래서 이번에는 그 과정을 알아보겠다. DNS DNS 서버의 기본 동작 DNS 서버에서 받은 조회 메시지는 다음과 같은 세 가지 정보가 포함되어 있다. (a) 이름 서버나 메일 배송 목적지(메일 주소에서 @ 뒷부분의 이름)와 같은 이름이다. (b) 클래스 DNS의 구조를 고안했을 때 인터넷 이외에도 네트워크에서의 이용까지 검토하여 이것을 식별하기 위해 클래스라는 정보를 준비했다.그러..

Network 2021.05.15

[웹 브라우저의 동작] 2. IP

전체적인 흐름 브라우저 실행 URL 입력 브라우저가 URL을 조사 후 리퀘스트 메시지 생성 DNS 서버에 IP 주소 조사 신청 OS에 웹 서버로 송신해주라고 의뢰 웹 서버 수신 이전 "1. HTTP" 글은 위 전체적인 흐름에서 "3. 브라우저가 URL을 조사 후 리퀘스트 메시지 생성"까지를 알아보았다. 이제 "4. DNS 서버에 IP 주소 조사 신청" 단계를 알아볼 차례이다. IP 이전 글에 언급했듯이 브라우저는 메시지를 송신할때 OS에 의뢰를 해야한다고 했다. 이때 OS에 의뢰하기 전 URI에 작성되어있는 도메인명에서 IP 주소를 조사하고 그 IP 주소를 통해 메시지를 받을 상대를 지정한다. TCP/IP 우선 TCP/IP에 대한 개념부터 알아보자. TCP/IP 네크워크는 작은 서브넷을 라우터로 연결하여..

Network 2021.05.14

[웹 브라우저의 동작] 1. HTTP

전체적인 흐름 구체적인 설명에 앞서 전체적인 흐름을 살펴보고 하나씩 파고 들어가 보겠다. 브라우저 실행 URL 입력 브라우저가 URL을 조사 후 리퀘스트 메시지 생성 DNS 서버에 IP 주소 조사 신청 OS에 웹 서버로 송신해주라고 의뢰 웹 서버 수신 URL URL이란? URL(Uniform Resource Locator)는 일반적으로 브라우저의 주소창에 "http://"로 시작하는 주소라고 생각하면 된다. 하지만 사실 "http://"뿐만아니라 "ftp:", "file:", "mailto:" 등도 있다. 이러한 것들은 하나의 기능 또는 하나의 액세스 방법 또는 하나의 프로토콜 종류를 나타낸다. 예를 들어서 "ftp:" 는 파일을 다운로드/업로드하는 FTP(FIle Transfer Protocol)의 클..

Network 2021.05.12

HTTP 상태 코드

상태 코드는 클라이언트가 서버를 향해 요청을 보낼 때 서버에서 그 결과가 어떻게 되었는지 알려준다. 예를 들면 200 OK와 같이 3자리 숫자와 설명으로 나타낸다. 숫자의 첫 번쨰 자리는 응답 클래스를 의미하는데 나머지 2자리는 분류가 없다. 이 응답 클래스는 다음과 같이 5개가 정의되어 있다. 클래스 설명 1xx informational 요청를 받아들여 처리중 2xx Success 요청를 정상적으로 처리함 3xx Redirection 요청을 완료하기 위해 추가 동작이 필요 4xx Client Error 서버가 요청을 이해 불가능 5xx Server Error 서버가 요청 처리 실패함 2xx 성공(Success) 2xx 응답은 요청이 정상적으로 처리되었음을 나타낸다. 202 OK 클라이언트가 보낸 요청을..

Network 2021.05.05

HTTP 메시지

HTTP 메시지 HTTP에서 교환하는 정보는 HTTP 메시지라고 불리는데 요청 측 HTTP 메시지를 요청 메시지, 응답 측 HTTP 메시지를 응답 메시지라고 부른다. HTTP 메시지는 복수 행(개행 문자는 CR+LF)의 데이터로 구성된 텍스트 문자열이다. HTTP 메시지는 크게 구분하면 메시지 헤더와 메시지 바디로 구성되어 있고, 최초에 나타나는 개행 문자(CR+LF)로 메시지 헤더와 메시지 바디를 구분한다. 메시지 헤더 개행 문자(CR+LF) 메시지 바디 메시지 헤더 : 서버와 클라이언트가 꼭 처리해야 하는 요청과 응답 내용과 속성 등 CR+LF : CR(carriage return : 16진수 0x0d)와 LF(line feed : 16진수 0x0a) 메시지 바디 : 꼭 전송되는 데이터 그 자체 요청..

Network 2021.05.04

HTTP 프로토콜의 구조

TCP/IP에 있는 다른 많은 프로토콜과 마찬가지로 HTTP도 클라이언트와 서버 간에 통신을 한다. 텍스트와 이미지 등과 같은 리소스를 필요하다고 요구하는 쪽이 클라이언트가 되고, 이러한 리소스를 제공하는 쪽이 서버가 된다. HTTP는 클라이언트와 서버의 역할을 명확하게 구별한다. 요청(Request)과 응답(Response) HTTP는 클라이언트로부터 요청(Request)이 송신되며, 그 결과가 서버로부터 응답(Response)으로 되돌아온다. 서버 측은 요청을 받지 않고서는 응답을 송신하는 일이 없다. 간단히 말해 서버는 말걸지 않으면 대답하지 않는다. 구체적인 예를 들어 클라이언트 측에서 HTTP 서버에 다음과 같은 요청을 송신했다고 하자. GET /index.html HTTP /1.1 Host: ..

Network 2021.05.02

웹과 네트워크의 기본

브라우저 주소 입력란에 URL을 입력하면 웹 페이지를 볼 수 있다. 그렇다면 어떻게 웹 페이지가 보일까? 간단하게 설명하면 URL을 입력하면 어딘가에 송신되고 그 어딘가에서 응답이 돌아오면 웹페이지가 표시된다고 말할 수 있다. 웹 브라우저는 지정된 URL에 의지해서 웹 서버로부터 '리소스(Resouce)'라고 불리는 파일 등의 정보를 얻는다. 이때, 서버에 요청을 하는 웹 브라우저 등을 클라이언트(Client)라고 부른다. 이렇게 클라이언트에서 서버까지 일련의 흐름을 결정하고 있는 것은 웹에서 HTTP(Hyper Text Protocol)이라는 프로토콜이다. 여기서 프로토콜은 "약속"이라고 이해하면 된다. 즉, 웹은 HTTP라는 약속을 사용한 통신으로 이루어져 있다. HTTP의 등장 배경 HTTP는 "여..

Network 2021.04.25
728x90