2025/01/10 10

웹 서비스 기본 구조

개요네트워크같은 인프라구조를 공부할 때 가장 중요한 것이 뭐냐면 전체적인 구조를 이해하는 것이다. 웹서비스에서 쓰이는 기본 프로토콜이 HTTP이다. 근데 HTTP라는 것은 TCP/IP연결 다음에 존재한다. 그러니까 HTTP 트래픽은 소켓 수준에서 만들어진 것이고 따라서 스트림 즉, 끝을 알기 어려운 데이터가 쭉 나열진 형태에서 파생된 것이다.  문제는 네트워크(TCP/IP와 같은 인터넷 네트워크)로 무언가를 보낼 때는 IP 최대크기 단위 MTU가 1500 밖에 안되니까 이 스트림을 TCP 스택 수준에서 짜른다. 이 짤려진 조각 1개를 세그먼트라고 한다면 이 세그먼트를 패킷으로 Encapsulation 해서 전송한다. 이렇게 스트림 데이터는 분해가 일어난다. 그래서 HTTP 트래픽은 가로형태로 데이터를 이..

2025.01.10

굵고 짧게 살펴보는 HTTP

굵고 짧게 살펴보는 HTTPHTTPHTTP는 HTML문서를 전송받기 위해 만들어진 응용프로그램 계층 통신 프로토콜이다.1996년에 1.0스펙이 발표되었으며, 1999년 6월에 1.1이 발표되었다.기본적으로 클라이언트의 요청에 대응하는 응답형식으로 작동한다.헤더는 다음과 같이 분류된다.일반 헤더요청 헤더응답 헤더엔티티 헤더요청에 사용되는 메서드는 주로 GET, POST이다.HTTP는 HTML문서를 전송하고 전송받기 위해 만들어진 L7 프로토콜이다. 핵심은 헤더이다. 헤더는 TCP/IP에서 이야기가 많이 나왔다. 어떤 단위로 데이터다 잘라지는데 IP 네트워크인 경우 최대 MTU로 잘라진다. 그래서 이 MTU에 IP Header가 나오고 그 뒤에 Payload가 온다. 중요한 것은 단위 데이터로 잘라지다 보니..

2025.01.10

URL과 URI

URL과 URIUniform Resource LocatorUniform Resource Identifier웹 기술을 이야기 앞에 있어서 기본적인 용어정리가 필요하다. 그 중에 가장 중요한 용어 2가지가 URL과 URI다. 우리가 앞서서 도메인에 대해 배웠다. 도메인에는 Domain Name과 Host Name으로 분리해서 생각하는게 좋다. 여기서 중요한게 URL이 있고 URI가 있는데URL은 Uniform Resource Locator로 위치지정자로 말할 수 있고URI는 Uniform Resource Identifier로 식별자라 말할 수 있다.( 자원의 위치에 의존하지 않는 고유한 식별자로 사용)그럼 여기서 Resource는 무엇일까? 웹 기술이라는 것에 한정지어서 생각해보자. 웹을 이야기할 때 가장 ..

2025.01.10

웹 기술 창시자와 대한민국의 인터넷

웹 기술 창시자와 대한민국 인터넷웹 기술의 창시자CERN(입자물리연구소)에서 컨설턴트로 근무정보검색 시스템 구축이를 바탕으로 현재의 웹 기술을 창안HTML, HTTP의 창시자개요(어쩌다 나오게 되었나)아마도 네트워크 공부하는 분들의 많은 이유 중 하나가 웹을 제대로 이해하기 위한 부분도 있을 것이다. 좋든 싫든 2023년 현재 왠만한 서비스들은 웹기술로 작동한다. 이런 웹기술을 처음 창시한 분이 팀 버너스리이다. 팀 버너스리라는 원래 유럽의 입자물리 연구소에서 일을 하였다. 또한 여기서 정보검색 시스템을 구축하였다. 그리고 그게 바탕이 되서 오늘날의 웹 기술이 탄생한 것이다. 여기서 한가지 주목해봐야 하는 것이 '입자물리연구소'이다. 연구소의 임직원분들이 하는 일이 논문을 보는것이다.A라는 논문에는 제목..

2025.01.10

한 번에 끝내는 DNS

DNS분산 구조형 데이터베이스데이터베이스 시스템(DNS 네임서버)의 분산구성데이터 영역별 구분(Domain Zone) 및 분산관리도메인의 네임서버 및 도메인 데이터는 해당 관리주체에 의해 독립적으로 관리됨트리구조의 도메인 네임(Domain Name) 체계Domain: 영역, 영토를 의미도메인 네임의 자율적 생성생성된 도메인 네임은 언제나 유일하도록 네임체계 구성개요OSI 7 Layer의 L1~L4는 Infra Structure로 볼 수 있다. L5~L7의 Application 뭔가 목적화 되는 것이고 이 Application들을 위해서 Infra가 존재하는 것이다. 그래서 우리가 인터넷을 이루고 있는 각 종 서비스라는 것이 Application 계층에 존재한다. 근데 Application 계층에 존재하는..

2025.01.10

TCP 연결과 게임버그

TCP 연결과 게임버그어떤 MMORPG게임에서 아이템 복제 버그가 발생하였다.이는 논리적 TCP연결과 물리적 링크간 차이를 이용한 시간차 공격이라 볼 수 있으며 연결이 사실은 End-point의 주관적 판단에 불과하다는 것을 보여준다. TCP연결이 착각이라고 말했는데 이것과 관련해서 악용한 해킹사례가 있었다.연결은 사실 End-point의 주관적인 판단에 불과하다. 즉 보안성이 전혀없는 판단이라는 것이다. 그래서 연결이 그 자체만으로 취약하다. 어떤 게임에서 이것과 관련한 버그가 있었다. 어떤 게임이 있으면 서버가 있을 것이고 서버에 사용자들이 접속해 있을 것이다. 예를들면 철수,영희,길동이가 접속해 있다 하자. 여기서 철수는 고렙이고 영희는 저렙이고 길동이라는 적군을 물리쳐야 한다고 하자. 그래서 고렙..

네트워크 2025.01.10

TCP에서의 연결이 착각...인가?

'파일 다운로드 중 LAN케이블을 분리했다가 다시 연결하면 어떻게 될까?' 우리가 TCP/IP로 어딘가 연결해서 파일을 다운로드 한다고 하자. 근데 여기서 LAN케이블을 잠깐 빼보자. 그러면 TCP연결은 어떻게 될까? 과연 이 연결은 유지될까? 끊어질까? 우리가 연결을 끊었다는 것은 L4에서의 연결이 끊어졌다는 것이다. 근데 내가 L1수준에서 LAN선을 잠깐 뽑았을 때 결과는 어떻게 될까? 일단 결론부터 보면 TCP 연결은 유지된다. 물론 우리가 LAN선을 얼마동안 길게 뽑아두었는지와 관련이 있을 것이다. 사실, RFC라는 표준문서에 기술되어 있는 부분과 실제 범용OS에서 구현되어 있는 것이 다르다. 그래서 이 부분에 대한 현실적인 판단이 필요한데 그리고 이러한 차이때문에 상단 process를 개발하는 ..

네트워크 2025.01.10

TCP, UDP 헤더 형식과 게임 서버 특징

TCP, UDP 헤더형식과 게임서버 특징TCP Header 형식 헤더형식을 구체적으로 봐보자. 위 그림의 가로 크기 체계가 32bit단위로 무언가 표현이 되어있다. Source Port와 Destination Port가 존재하며 이 포트는 16bit 주소체계로 되어있다. 이 포트의 값의 범위로 이야기를 해보면 0~65535번까지 가는데 문제는 이 포트중에 0,65535번은 쓸 수가 없다. 그래서 쓸 수 있는 포트의 개수는 2^16-2이다. 또한 이 포트중에 well-known 포트라는 것이 있는데 이게 무엇이냐면 HTTP(80), FTP(20, 21), TELNET(23) 등과 같이 기본으로 정의되어 있는 포트들이며 이것을 포트로 쓸 수가 없다. 그리고 그 다음으로 Sequence Number가 나오는데..

네트워크 2025.01.10

TCP 연결 종료와 상태 변화

TCP 연결 종료 과정(4way handshaking) 연결을 했다면 연결을 종료하는 절차도 있을 것이다. TCP 연결 종료과정을 보면 연결할때보다 조금 복잡하다. 이 종료과정을 4-way-handshaking이라고 한다. 여기서 1가지 대 전제가 있는데 특별한 이유가 없다면 클라이언트의 행동은 active하고 서버는 passive하다. 무슨 이야기냐면 연결하고자 하는 것이 클라이언트면 연결을 종료하는 것도 클라이언트여야 한다. 그게 보편적이다. 만약 서버가 연결을 끊겠다고하면 이런 경우는 엄청 특수한 경우이다. 그래서 클라이언트가 연결을 시작하고 연결을 종료하는 것이 일반적인 TCP 통신체계이다. 연결을 끊자고 하는 클라이언트는 established상태여야 연결을 끊을 수 있다. 그러면 클라이언트가 e..

네트워크 2025.01.10

TCP 연결 과정(3-way handshaking)

TCP 연결과정 (3-way-handshaking)TCP 연결 절차에 대해 이야기할 때 3-way-handshaking이 늘 등장한다. 연결이라는 것이 결론이라면 그 연결의 과정으로 등장하는 것이 3-way-handshaking이다. 위 그림처럼 어떤 client가 있다면 접속 대기중인 서버에 접속을 할 것이다. 위 그림의 세로 선을 timeline이라고 하고 어느 시점에 클라이언트가 192.168.0.20:80번의 서버와 연결을 하고자 한다. 여기서 클라이언트가 서버에 갔다가 돌아오는 시간을 RTT라고 하는데 50ms정도 걸린다고 하면 서버까지 가는 시간을 25ms, 돌아오는 시간을 25ms이다.이때 통신되는 단위가 Segment인데 일반적으로 Segment는 payload와 TCP-header로 구성..

네트워크 2025.01.10