add content in algorithm and network - #23
Conversation
add python code which is finding number that is not in hashSet
DNS content explain what does DNS system works and how it works
|
우선, pr 너무 환영합니다~~~!!! 감사해요! 올려주신거 살짝 코멘트 남길게요! 먼저 set과 list는 다음의 경우에 사용합니다.
이번 문제의 경우, 잘 설명해주신 것처럼 set도 O(n)의 시간복잡도를 가지고, list로 구현하더라도 O(n)의 시간복잡도를 가집니다.
=> 리스트가 아니라 set의 x in s operation경우, O(1)이 맞네요!!! [풀이2] [풀이3] |
|
다음으로, 너무 잘 설명해주셔서 추가 설명만 덧붙이겠습니다. 먼저, DNS쿼리는 2가지 방식이 있습니다.
설명해주신 방법이 1번에 해당되는, Iterative query입니다. 참고하면 좋을거 같아요~! 잘 읽었습니다! cf) Root name server는 전 세계에 13개의 서버가 있습니다. |
There was a problem hiding this comment.
@kyupkyup 안녕하세요!
용감한 친구들 Director이자 brave tech interview(이하 브테인) maintainer Covenant입니다.
본 저장소에 관심을 갖고 우선 PR남겨주셔서 감사합니다!
도움이 되었으면 하는 마음에 리뷰를 남겨보았습니다!
DNS의 핵심은 human-readable(domain name) to machine readable language(IP address)가 아닐까 생각이 듭니다. 즉 인간이 IP 주소를 기억하기 힘들기에 domain name을 도입한 것이고요. 본 핵심에 맞추어 좋은 시작이었습니다.
인간에게 편리함을 가져다주었으나 Client와 DNS간의 request, response를 추가적으로 통신해야하는 문제가 생겼습니다. 효율성을 위해서 cache를, 수 많은 domain name을 관리하기 위해서 DNS 서버가 나뉘어졌다고 정리할 수 있겠습니다.
추가했으면 하는 내용은 다음과 같습니다.
- DNS 서버 그리고 통신에 대한 기본 스팩이 누락되어있습니다. (ex. UDP, 53 Port, BIND Unix Computer, DNS Packet 등)
- local cache 혹은 DNS서버가 가지고 있는 caching된 IP 주소가 실제 IP 주소와 차이가 있을 때 어떻게 동작할까요?
- DNS는 다음과 같은 위협이 존재합니다. DNS서버는 각 위협에 어떻게 대응할까요?
3-1. man in the middle attack
3-2. DNS Spoofing
3-3. DDos(flooding attack)
본 저장소에 merge가 되기 위해서는 다음 작업을 해주셔야합니다!
일부 마크다운 파일에 공백, ------ 갯수, 언더바를 이용한 글씨체 bold를 star 형식으로 변환을 해주셨는데요!
어떠한 오픈소스 저장소가 마찬가지이겠지만 협의가 없는 일관성이 깨지는 것을 피하고 싶어합니다.
본 저장소의 글을 웹으로 옮기기 위해서 스크립트를 작성할 때 일관성이 조금씩 깨져있다면 상당히 까다로워지는 일이 생기거든요!!
지금 레이아웃 수정할 부분이 있다는 것을 인지하고 있고요!! 혹시 변화가 필요한 부분이 있다면 issue에 남겨주세요!
용감한 친구들 Director
Covenant
|
|
||
| 만약 없다면, DNS 서버에서는 해당 도메인의 IP를 찾기 위해서 루트 도메인부터 찾기 시작한다. 해당 도메인을 찾기위해 DNS 서버는 root NS(name server) 로 쿼리를 보내고, 이를 통해 .com(Top-level Domain 이하 TLD)의 NS 정보를 받아온다. | ||
|
|
||
| 이 TLD NS 정보를 통해 이 정보에 해당하는 TLD NS에 다시 google.com 에 대한 정보를 쿼리하게 된다. 이렇게 되면 google.com 의 IP주소가 있는 네임서버를 반환 받게 되고, 편의상 goo네임서버 라고 칭하겠다. |
| <details> | ||
| <summary> 예비 답안 보기 (👈 Click)</summary> | ||
| <br /> | ||
| > 네트워크 통신을 위해서는 ip 주소가 필요하다. 인터넷 내의 모든 네트워크 장치 및 서버에는 이 ip주소가 할당되어 있다. 때문에 특정 서버로 데이터 요청을 하기 위해서는 ip주소가 필요하다. |
There was a problem hiding this comment.
데이터 요청은 정확한 표현인지 의문이 있습니다. DNS에서 획득한 IP주소를 이용한 HTTP 통신은 Client입장에서 보면 OSI 7 layer를 통해 request, response 수행함을 의미합니다. 추상성이 높은 데이터라는 표현을 사용하는데 조심스럽고요! 데이터와 요청을 병기하기보단 용어를 통신 혹은 데이터를 제하고 request의미를 살려 요청 정도가 좋겠습니다.
| <br /> | ||
| > 네트워크 통신을 위해서는 ip 주소가 필요하다. 인터넷 내의 모든 네트워크 장치 및 서버에는 이 ip주소가 할당되어 있다. 때문에 특정 서버로 데이터 요청을 하기 위해서는 ip주소가 필요하다. | ||
|
|
||
| 일반적으로 ip 주소는 xxx.xxx.xxx.xxx 형식으로 이루어진 IPv4 형식을 많이 사용한다. |
There was a problem hiding this comment.
현재 네트워크 환경에서 일반적으로 ... 많이 사용한다.
일반적으로와 많이 둘 중 하나의 표현을 살리는게 좋겠습니다~
|
|
||
| 일반적으로 ip 주소는 xxx.xxx.xxx.xxx 형식으로 이루어진 IPv4 형식을 많이 사용한다. | ||
|
|
||
| 하지만 일반인이 이 주소를 모두 달달 외우고 있기란 쉽지 않은 일이기 때문에, 조금 더 인간에게 익숙한 언어형태를 통해 ip주소 대신 DNS(Domain Name System)을 사용하게 되었다. |
There was a problem hiding this comment.
human-readable(domain name) to machine readable language(IP address) 👍
| - www : **Third-level Domain** | ||
| - google : **Second-level Domain** | ||
| - com : **Top-level Domain** | ||
| - 숨겨진 루트 도메인 (여기서 부터 시작) |
There was a problem hiding this comment.
숨겨진 루트 도메인이 어떤 의미인지 궁금합니다. Root DNS에서 응답하는 정보를 의미할까요?
|
|
||
| 로 구분된다. | ||
|
|
||
| 도메인을 이렇게 여러 레벨로 찢어놓은 이유는 세계의 방대한 Domain 내용을 한 서버에 담아둘 수 없어 분산시키기 위해서이다. |
There was a problem hiding this comment.
자유롭게 쓸 수 있지만 찢어놓은을 면접에서 사용하기에 곤란한 표현으로 보입니다. 분산한 이유 혹은 앞의 레벨이라는 단어를 살려 계층화 구조 라는 표현이 좋겠습니다.
|
피드백 감사 드립니다~ 수정해서 다시 커밋하도록 하겠습니다~ |


welcome your feedback