일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- DevOps
- Linux
- cloud
- JPA
- LAN어댑터
- 캐시서버
- Set
- 라우터
- container
- 방화벽
- Pipeline
- AOP
- Spring
- 액세스회선
- IntelliJ
- ansible
- sonarQube
- Java
- tomcat
- 허브
- jdk
- docker
- STREAM
- Jenkins
- Collection
- map
- gradle
- post
- 소켓
- mybatis
- Today
- Total
목록CS 지식 (40)
거북이-https://velog.io/@violet_evgadn 이전완료
데이터 송/수신 동작 개요 ◎ 개요 이제 브라우저는 Request Message도 만들었고 OS에 메시지 송신을 의뢰하기 위해 IP 주소도 찾아냈다. 남은 것은 브라우저 측에서 OS 내부에 있는 프로토콜 스택에 데이터(Request Message)를 목적지(웹 서버 IP 주소)까지 보내달라고 의뢰하는 단계이다. OS 내부 프로토콜 스택에 메시지 송신을 의뢰할 때에도 이전에 사용했던 "Socket 라이브러리"를 활용한다. 하지만 IP 주소를 조회할 때는 메서드 1개(gethostbyname)만 사용한 것과 반면에 이 단계에선 여러 개의 메서드를 순서대로 사용해야 한다. 즉, OS 내부 프로토콜에 메시지 송신을 의뢰할 때는 라이브러리에 존재하는 복수의 프로그램을 결정된 순번대로 실행시켜야 하기 때문에 훨씬 ..
DNS 서버 기본 동작 ◎ Resolver가 보낸 Request Message DNS 리졸버가 DNS 서버에 보낸 Request Message에는 총 3가지 정보가 포함되어 있다. 이름 서버나 메일 배송 목적지(메일 주소에서 @ 뒷부분의 이름) 같은 이름을 의미한다. 쉽게 생각하면 도메인명을 의미한다고 보면 된다. 클래스 DNS 구조를 고안할 때 인터넷 이외 네트워크에서도 이를 사용할 수 있도록 만들었다. 이 때문에 어떤 네트워크에서 DNS 구조를 사용하는지 식별하기 위하여 클래스라는 정보를 추가했다. 하지만 현재는 인터넷 이외의 네트워크는 소멸되었으므로 클래스는 항상 인터넷을 의미하는 "IN"으로 고정되어 있다. 타입 이름에 어떤 타입의 정보가 지원되는지를 나타낸다. A일 경우 이름에 IP 주소가 지원..
DNS ◎ DNS란? 브라우저가 OS에 메시지 송신을 의뢰할 때 도메인 명에 맞는 IP 주소를 같이 전달해줘야 한다고 말했다. 그리고 도메인 명에 맞는 IP 주소를 찾기 위해 활용하는 시스템을 DNS라고 한다. DNS는 Domain Name System의 약자로써 서버명(도메인명)과 IP 주소를 대응시키기 위해 가장 많이 활용한다. DNS는 도메인명뿐만이 아니라 메일 주소와 메일 서버를 대응시키는 등의 다양한 정보를 이름에 대응하여 등록할 수 있다. 브라우저는 가장 가까운 DNS 서버에 도메인 명을 전달하고 DNS 서버는 응답을 통해 대응되는 IP 주소를 전달하는 것으로써 도메인 명에 맞는 IP 주소를 반환받을 수 있다. DNS 서버에 IP를 조회한다는 것은 곧 "외부 서버"에 요청을 보낸다는 것과 동일..
IP ◎ IP 주소란? 브라우저는 URL을 분석하여 클라이언트의 니즈를 파악하고 Request Message를 만들었다. 이후 브라우저는 메시지를 네트워크에 송출하는 기능을 가지고 있지 않기 때문에 OS에 네트워크를 통해 메시지를 송신해 달라고 의뢰한다. 그리고 이 의뢰 과정에서 도메인 명에 해당하는 IP 주소를 조사한 뒤 OS에 전달해주어야 OS 측에서 Request Message를 어디에 보내야 할지 알게 된다. 그렇다면 IP 주소란 무엇일까? 인터넷이나 LAN은 TCP/IP 개념에 기초하여 만들어졌기 때문에 TCP/IP 네트워크가 어떻게 동작하는지에 대한 먼저 알 필요가 있다. 위 이미지를 보면 알 수 있겠지만 TCP/IP는 "서브넷"이라는 작은 네트워크가 라우터에 메시지를 전달하는 구조로 전체 네..
이전까지 HTTP Protocol에 대해서 알아보았다. HTTP Protocol은 웹 서버와 HTTP Reqeust & HTTP Respond를 주고받으며 통신하는데 이때 HTTP에 의해 포맷이 정해져 있는 "Message"에 데이터를 담아 통신을 수행한다. 이번 Section에서는 HTTP Protocol에 의해 정해져 있는 포맷인 "Message"에 대해 알아보겠다. Request Message ◎ Request Message 형식 (공백)(공백) - Request Line : - Message Header .... - Message Header (공백 행) 가장 첫 번째 줄을 Request Line이라고 한다. :으로 되어 있으며 공백 행 이전까지 나온 모든 내용이 Message Header이다. ..
HTTP Protocol ◎ HTTP Protocol란? 브라우저는 이전 단계에서 설명했던 대로 URL을 해독하여 어떤 서버에 어떤 동작을 위해 액세스 하는지 판명했다. 이후 브라우저는 HTTP Protocol을 활용해 웹 서버에 액세스 하게 된다. Protocol을 직역하면 "규약"이라고 말할 수 있다. 그리고 이전에 말했듯 HTTP는 웹 서버에게서 웹 문서 및 데이터를 받아올 수 있는 Protocol이다. 이 둘을 합치면 웹 서버에서 웹 문서 및 데이터를 받아오는 방법 전체에 대한 규약임을 알 수 있으며 쉽게 말하자면 Request와 Respond를 주고받는 방법(데이터 및 순서)을 정한 것이라 이해할 수 있다. HTTP Protool의 기본 개념은 단순하다. 먼저 Client가 서버를 향해 Requ..
URL ◎ URL이란? URL은 Uniform Resource Locator의 약자로써 사용자가 원하는 자원이 네트워크 상 어디에 있는지를 알려주기 위한 규약이다. URL 내부에는 네트워크에서 찾고자 하는 특정 정보 자원의 종류와 위치가 기록되어 있다. 우리가 흔히 알고 있는 URL이란 "http://~"혹은 "https://~"로 시작하는 웹 사이트 주소겠지만 사실 "ftp://~", "file://~", "mailto://~" 등 많은 종류의 URL이 존재한다. 그렇다면 왜 이렇게 많은 URL이 존재하는 것일까? 브라우저는 우리가 흔히 사용하는 웹 서버에 액세스 하기 위한 Client로써 활용할 수 있지만 파일을 다운로드/업로드하는 FTP 기능이나 Mail 기능 또한 가지고 있다. 그렇기 때문에 브라..
클라이언트 1. 사용자가 URL을 입력한다. 2. 웹 브라우저는 URL을 해석하여 HTTP 메시지를 만들고 Socket 라이브러리에 건네준다. 3. Socket 라이브러리는 HTTP Message를 송신 데이터로 Protocol Stack에게 건네준다. 4. TCP는 송신 데이터를 패킷 길이에 맞게 분할하고 TCP Header를 추가하여 IP에 건네준다. 5. 패킷에 IP Header와 MAC Header를 부가한 뒤 LAN 드라이버에게 건네준다. MAC Address : 가장 가까운 라우터의 MAC 주소 IP Address : 웹 서버의 IP 주소 6. (프로토콜 스택 안에 있는) IP에서 송신 패킷을 받고 LAN 어댑터에게 패킷을 주며 송신하도록 지시한다. MAC Address : 가장 가까운 라우터..
네트워크를 공부하려 하는데 어디서부터 어떤 것을 공부해야 하는지 매우 막막했다. 그래서 여러 사이트에서 네트워크 관련 책 중 괜찮은 것을 찾아봤고 "성공과 실패를 결정하는 1%의 네트워크 원리"로 공부하기로 결정하였다. 앞으로 이 책을 통해 네트워크 공부 및 블로그 정리를 진행할 것 같다. 네트워크 동작 과정 네트워크는 사용하는 HW 및 SW 수가 많기 때문에 세세하게 공부하다가 전체 네트워크 흐름을 파악하지 못하는 경우가 생길 수 있다. 네트워크의 흐름을 잊어버리고 미시적 관점에서만 네트워크를 공부하게 될 경우 암기 과목밖에 되지 않으며 외운 것을 흐름에 적용하지 못하게 된다. 따라서 먼저 전체 동작 과정을 러프하게 공부한 뒤 본격적인 공부에 들어가도록 하겠다. 네트워크 전체 작동 흐름 ◎ 네트워크 동..
함수 호출 우리는 흔히 함수를 사용할 때 "함수이름()" 문구를 활용한다. 이렇게 함수 이름을 통해 특정 함수를 활용하는 것을 "함수의 호출"이라고 한다. 만약 호출한 함수가 Parameter를 가지고 있다면 우리는 함수를 호출하는 과정에서 인자를 전달해줘야 한다. 이때 인자를 전달하는 대표적인 방법이 Call by Value와 Call by Reference 방식인 것이다. 프로그래밍 언어별로 인자 전달 방식에도 약간 차이가 존재한다. Python에서는 Passed by assignment라고 불리는 Call by Value와 Call by Reference의 혼합 방식을 사용하며, Java는 Call by Value만 사용하지만 C 언어의 Call by Value와는 다른 동작 방식을 가진다. 일단 ..