블로그
전체 3#카테고리
- 프로그래밍 언어
- 네트워크
#태그
- 파이썬
- python
- walrus
- cleancode
- 네트워크
- tcp
- udp
- ip
- dns
- 웹
- web
- 웹서버
- 브라우저
- arp
- 파이참
- pycharm
- 코딩
- 프로그래밍
- 인프런
2023. 11. 17.
4
파이썬 왈러스 연산자 소개(필요성, 사용 예시)
이번 글에서는 왈러스 연산자에 대해 알아보겠습니다.왈러스 연산자는 아무래도 새로운 기능을 위한 개념이라기 보다는 짧고 직관적인 코드 작성에 사용되는 개념이다보니 직접 예제를 보며 설명하겠습니다.왈러스 연산자는 비교적 최근인 3.8 버전에서 등장한 개념입니다.한 줄에서 변수에 값을 할당하면서 동시에 이 값을 표현식의 일부로 사용할 수 있습니다.바다코끼리 연산자를 통해 파이썬에서 할당 표현식을 가능하게 합니다.여러분이 오랜만에 소비를 좀 하려고 합니다. 우선 그래픽 카드도 좀 사고 싶고,,, 그 다음 순위로 책(2권 사야됨), 그 다음 순위로 키보드, 그 다음 순위로 만년필을 선호한다고 가정하겠습니다.이제 온라인 쇼핑몰 속을 돌아다니며 현재 예산에서 무엇을 살 수 있을 지 봅니다!예산 내에서 그래픽 카드를 살 수 있으면 사고, 아니면 책 2권 값을 낼 수 있는 지 확인합니다. 그래도 안 되면 순서대로 키보드, 만년필을 살 수 있는지 확인해야 합니다.능숙한 프로그래머인 여러분들은 이정도는 파이썬으로 자동화하실 수 있죠?my_budget = 1000000 gift_value = { # 그래픽 카드는 품절이랍니다 'gc': 1300000, 'book': 50000, 'keyboard': 55000, 'pen': 80000 } # 99999999 정도면 품절 상품도 구매할 수 있다고 칩시다. value = gift_value.get('gc', 99999999) if value 의도대로 동작하지만;; 너무 복잡해보이는 코드입니다. 제가 코드를 잘못 짰다고요?elif 사용을 통해 직관적으로 보이게 만들 수 있지만, 그렇게 쉽게 줄여지지 않습니다. 항상 동일 환경 조건에서 비교를 하는 것이 아니며(book 같은 경우에는 *2 후 비교) 각 상품마다 나오는 메시지가 다르기 때문입니다.이제 왈러스 연산자가 나올 시간입니다. 이 코드에 왈러스 연산자를 적용해보겠습니다.my_budget = 1000000 gift_value = { # 그래픽 카드는 품절이랍니다 'gc': 1300000, 'book': 50000, 'keyboard': 55000, 'pen': 80000 } if (value := gift_value.get('gc', 99999999)) 위아래 코드의 차이가 잘 느껴지셨으면 좋겠습니다.지금 본 사례처럼 왈러스 연산자를 사용하면 코드를 더 직관적이게 만들 수 있습니다.조건문 내에서 값을 할당하고 바로 검사, 블록 안밖에서 사용까지 할 수 있으니 정말 편리하다고 느낍니다.다른 사용 예시를 보며 마무리하겠습니다.# 입력값을 받아서 검사하고 처리 if (n := int(input("Enter a number: "))) > 10: print("10보다 큰 수를 입력했군")# 튜플 언패킹을 사용한 예 a, b = (1, 2) print(a, b) # 출력: 1 2 # 튜플 타입에서 왈러스 연산자를 사용하려면 반드시 명시적으로 괄호를 해주거나 따로 언패킹, 패킹해야 됩니다. (a := 1, b := 2) print(a, b) # 출력: 1 2 원문: https://pinstella.com/writer/articles/7
프로그래밍 언어
・
파이썬
・
python
・
walrus
・
cleancode
2023. 01. 02.
4
(구체적으로) 웹 사이트에 접속하기까지 무슨일이 일어날까?
안내:단순하게 dns에서 도메인을 ip로 변환하여 그 ip를 이용해 웹 사이트에 접속한다 식의 간단한 설명이 아닙니다.이해를 돕기 위해 실제 상황과는 다른 요소가 있을 수 있습니다.(데이터 처리 위치 등) 들어가기 전에 아래 내용을 눈으로 잘 익혀주시면 글을 이해하는 데 큰 도움이 될 수 있습니다.인터넷 네트워크 세상에서는 상대와 1대1로 통신하기 위해서는 2가지 주소(IP & MAC)를 알아야 합니다.IP 주소를 이용해 기기를 찾고자 한다. -> 라우터라는 기기는 해당 IP를 가진 컴퓨터를 찾기 위해 어느 라우터를 향해 가야 하는 지(또는 통해 가야 하는 지) 알고 있다.MAC 주소를 이용해 기기를 찾고자 한다. -> 스위치라는 기기는 자신이 담당하는 해당 MAC을 가진 컴퓨터가 정확히 어디 연결되어 있는 지 알고 있다.1대1로 정확히 통신하기 위해서는 두 컴퓨터가 모두 유효한 두 주소를 가지고 있어야 합니다. 여러분은 inflearn.com에 접속하려 합니다. 먼저 컴퓨터를 켜야겠죠?여러분은 컴퓨터의 전원을 올렸습니다. 저런, 여러분의 컴퓨터는 고정 ip를 가지고 있지 않습니다.~ 통신사가 여러분의 컴퓨터가 필요할 때마다 동적으로 ip 주소를 빌려주는 사설 ip를 사용해야 하는군요.그나마 다행히 mac 주소는 여러분의 컴퓨터를 출고할 때부터 메인보드의 네트워크 카드에 각인되어 있어서 따로 건드릴 것은 없네요. 사설 ip를 사용하기 때문에 방금 막 켜진 컴퓨터는 DHCP.exe를 실행시킵니다.(물론 고정ip를 가지고 있어도, 컴퓨터가 자신과 가장 가까이 있는 라우터 장비를 찾기 위해 실행될 수 있습니다.) DHCP.exe의 목적은 자신과 연결되어 있는 라우터라는 장비의 정보와, 도메인을 ip 주소로 변환해주는 dns 서버의 정보를 보내주며, 유동ip를 사용해야 하는 컴퓨터에게 ip를 할당해주는 서버와 통신하고 그 정보를 컴퓨터에 저장하는 역할입니다.그래서 DHCP.exe는 DHCP 서버를 찾아야 합니다.근데 우리의 컴퓨터는 현재 ip 및 DHCP, 라우터 정보가 아무것도 없습니다. 이럴 때에는 무식한 방법만이 해결책이 될 수 있습니다. 아무 기기에게나 '당신이 DHCP 서버입니까?'라고 물어봅니다. 진짜로 이렇게 물어봅니다. 상황별, 네트워크 기기별로 약간씩 다르지만 DHCP 과정이 일어날 때는 여러분의 컴퓨터가 인터넷을 이용하기에는 아직 미성숙(?)한 상태이기 때문에 해당 과정과 관련된 모든 요청과 응답은 LAN 전체에 전파되도록 되어있습니다.물론 LAN 영역 전체에 요청과 응답을 할 때는 다음 제약 사항이 있긴 합니다.같은 Lan 영역 안에서만 물어봅니다. 다른 LAN 영역 친구들은 무슨 일이 일어나는 지 모릅니다. 보통의 경우 dhcp 서버는 같은 lan 영역 안에서 무조건 찾을 수 있습니다.물어볼 때 형식을 지켜 물어봅니다. 아래 가로 줄은 그 형식의 구체적인 부분을 이야기하고 있기 때문에 건너뛰어도 좋습니다.요청을 보내기 위해 작성하는 형식은 일종의 택배 상자와 같습니다. 보내는 사람, 받는 사람, 택배 무게 등이 택배 상자에 적혀있죠. DHCP 서버를 찾는 상황에서는 3번의 포장 과정을 거치게 됩니다. 이 포장 과정을 마쳐야 전송할 수 있게 됩니다.가장 먼저 실행되는 UDP.exe는 DHCP 요청이라는 문서를 포장합니다.초록색은 택배 내용물, 나머지는 택배 송장이라고 생각하시면 됩니다.여기에서 포트라는 생소한 개념이 등장합니다.포트는 UDP.exe 파일이 구체적으로 무얼 해야 하는 지 알려주는 역할입니다.DHCP 서버는 67번(이 상황에서는 받는 컴퓨터의 포트에 들어가겠지요),여러분의 컴퓨터는 68번(이 상황에서는 보내는 컴퓨터의 포트에 들어가겠지요)을 적어넣어주시면 됩니다.67, 68번 포트처럼 미리 지정되어 있는 경우도 있고, 간혹 비어 있는 포트는 사용자 지정 작업을 수행하게 구성할 수 있습니다. 그다음 IP.exe가 실행됩니다.ip 주소를 이용해 앞에서 포장한 udp 택배를 포장합니다.앞서 포장한 택배를 물류 센터에서 처리할 수 있게끔 다시 포장합니다.여기서 앞서 나온 UDP 택배와 크게 다른 점은, 택배가 분리될 수 있다는 겁니다.인터넷 세계에서는 택배가 너무 커서 다른 택배들이 처리되는 것을 방해하는 것을 경계합니다.네트워크마다 받아들일 수 있는 택배 크기가 다르다면, 택배가 분리됩니다.그리고 ip 택배는 송장에 내용물을 처리하기 위해 어떤 exe를 실행시켜야 되는가도 적습니다. 우리의 UDP를 처리하기 위해서는 17을 적어주면 됩니다. 17이 적힌 택배가 오면 UDP.exe를 실행시키라는 뜻입니다.마지막으로 보내는 쪽 ip와 받는 쪽 ip를 적습니다. 현재 여러분의 컴퓨터는 ip 주소가 없는 상태이기 때문에 0.0.0.0을 적고, DHCP의 ip 주소를 모르기 때문에 lan 영역 전체로 택배를 보내는 255.255.255.255를 받는 컴퓨터의 ip 주소로 적습니다.마지막에는 아까 포장해둔 UDP 택배를 잘 넣어둡니다. 그다음 이더넷.exe가 실행됩니다.이더넷 택배로 ip 택배를 포장합니다. 이더넷 택배는 구체적으로(몇 동 몇 호) 어디로 가야하는 지 알려줍니다.택배 송장에 제일 먼저 이것은 이더넷 택배이므로 이더넷.exe가 처리해야 한다는 것을 알려줍니다.그다음에는 받는 컴퓨터와 보내는 컴퓨터의 MAC 주소를 적어줍니다. 스위치라는, 여러분 집 어딘가 거실 또는 지하에 묻혀있을 수 있는 네트워크 장비는, MAC 주소를 통해 정확하게 지정된 컴퓨터로 택배를 보내줍니다.보내는 컴퓨터의 MAC 주소에는 여러분 컴퓨터 MAC 주소를 넣어줍니다.받는 컴퓨터의 MAC 주소에는 LAN 전체에 보내라는 FF:FF:FF:FF:FF:FF를 넣어줍니다.그다음 송장에 적힌 내용은 이더넷 택배를 열고 어떤 exe를 실행시켜야 되는가 입니다. ip.exe를 실행시키기 위해서는 0x0800을 적어두면 됩니다.마찬가지로 마지막에는 아까 포장해둔 UDP를 포장해둔 IP를 잘 넣어줍니다. 아무에게나 막 요청을 뿌리고 다닌 끝에 응답이 돌아왔습니다.DHCP 서버는 응답으로 여러분의 컴퓨터가 사용할 수 있는 IP 주소를 제시해줍니다.(물론 이 과정에서도 응답을 보내는 DHCP 서버는 열심히 택배 포장을 합니다) 여러분의 컴퓨터는 이 DHCP 서버에게 '당신이 보내준 제안을 받아들이겠다'라는 택배를 보냅니다.그리고 DHCP 서버는 마지막으로 정보를 업데이트(컴퓨터에게 제시한 IP를 컴퓨터가 승인하여 사용 중)하고 처리를 끝내게 됩니다. 마지막 요청에서 기본 게이트웨이(라우터)의 IP 주소와 DNS 서버의 IP 주소 등 네트워크를 본격적으로 이용하기 위해 필요한 정보를 보내주게 됩니다.바로 DHCP 서버가 해당 IP 주소를 사용하라고 통보하는 방식을 사용할 수 있겠지만, 굳이 두 컴퓨터가 합의의 과정을 거치는 이유는 한 Lan 영역 안에 반드시 하나의 DHCP 서버가 존재한다는 보장이 없기 때문입니다. 물론 우리는 이상적인 상황을 가정하므로 그냥 넘어가겠습니다.이 과정에서 많은 시스템-dhcp서버가 아닌 근처, 즉lan에 있는 다른 컴퓨터-에 필요 없는 요청이 가게 됩니다. 그런데 말입니다.DHCP로부터 할당받은 IP 주소가 10.x.x.x 로 되어 있네요~?해당 주소는 사설IP에 사용되는 주소로, 외부(LAN 밖)와 소통하기 위해서 반드시 거치는 기본 게이트웨이(라우터)가 약간 지능적으로 나와줘야 합니다.한 LAN 영역 안에 있는 기기들은 다른 LAN 영역으로 택배를 보낼 때 라우터의 ip 주소로 대신하여 보내게 됩니다. 물론 lan 안에서 서로 다른 기기들의 요청을 구분하기 위해 라우터가 포트 번호로 구분하여 요청을 보내고, 응답을 나누어 줍니다.복잡하지만, 인류가 사용하기에는 숫자가 너무 적은 ipv4 주소를 아낄 수 있는 좋은 방법이기 때문에 많이 사용됩니다. DHCP.exe는 최종적으로 종료되었으며, 여러분은 이제 브라우저를 켜게 됩니다.브라우저에 http://inflearn.com을 입력하셨군요.좋아요. 이제 여러분의 화면에 inflearn을 띄우기 위한 여정을 시작해 봅시다. 아마 위에서 보았겠지만, 외부와 통신하기 위해서는 기본 게이트웨이를 거치게 됩니다. 그리고 DNS 서버에게 요청을 보내 inflearn의 ip 주소를 알아올 수 있지요. DHCP 서버는 우리에게 기본 게이트웨이와 dns의 IP 주소를 알려주었고요. 그러나 완전한 통신을 하기 위해서는 ip주소와 mac 주소가 필요합니다.즉, dns와 기본 게이트웨이의 mac 주소를 찾아야 합니다! 이때 사용하는 프로그램은 ARP.exe입니다. 여담 exe들은 각각 자신과 동급인 것들로 나눌 수 있습니다.이렇게 동급인 것들로 나누면 총 7개의 분류가 완성되며, 고급지게 표현하면 이것이 OSI 7계층 모형입니다.7층에서 만들어진 택배를 외부로 보낼려고 하면 6층, 5층, 4층, 3층, 2층, 1층에서 순서대로 포장을 하게 됩니다.7층 exe로 유명한 것이 HTTP입니다.아까 보았던 UDP.exe는 4층입니다. 다른 4층으로는 TCP.exe가 있습니다.IP.exe는 3층이고, 이더넷.exe는 2층입니다.IP 주소는 3층 송장에 적고, MAC 주소는 2층 송장에 적는다는 것을 알 수 있죠.1층은 실제 전선을 따라 이동하는 비트들에 대해 다루므로 여기에서는 다루지 않겠습니다.또한 반이중, 전이중 통신을 담당하는 5층과 인코딩과 디코딩을 다루는 6층 또한 생략하도록 하겠습니다.한편 지금 알아볼 ARP.exe는 2층이냐 3층이냐 논쟁이 있습니다. 서적과 인터넷 문서에서는 작성자의 취향(?)에 따라 2층, 3층 중 하나로 표기하고 있습니다.여기에서는 이 논쟁은 다루지 않도록 하겠습니다.ARP.exe는 택배 포장을 합니다.택배 내용은, 해당 ip 주소를 가지고 있는 컴퓨터는 컴퓨터의 MAC 주소를 나에게(내 컴 MAC 주소로) 보내달라는 의미를 담고 있습니다.당연히 LAN 영역 전체에 보내도록 되어 있습니다.... 열심히 택배를 보낸 끝에 기본 게이트웨이(라우터)가 우리의 요청에 응답하였군요. 이 응답을 통해 우리는 기본 게이트웨이로 완전한 1대 1 통신을 할 수 있게 되었습니다. 이제 DNS 서버와 통신을 하여서, inflearn.com의 IP 주소를 알아와야 합니다.마찬가지로 DNS 서버의 MAC 주소를 알아올려고 합니다.그러나 일반적으로 DNS 서버는 LAN 영역 밖에 있습니다. arp 택배가 유효하게 전송될 수 있는 곳은 여러분의 컴퓨터가 속해 있는 LAN 영역 안인데 어떡해야 할까요? 여러분의 컴퓨터는 이 상황을 신경쓰지 않아도 됩니다.왜냐고요? LAN 외부 영역과의 통신은(택배 주고받기는) 기본 게이트웨이가 해주기 때문입니다.같은 LAN 영역이 아닐 때에는 IP 주소만 제대로 적고, MAC 주소에는 아까 ARP.exe 프로그램을 실행시켜서 알아온 기본 게이트웨이의 mac 주소를 적어주면 됩니다. 기본 게이트웨이가 목적지 MAC 주소로 적혀 있으면 스위치는 택배를 기본 게이트웨이로 전달합니다. 기본 게이트웨이(라우터)는 다음 라우터에게 이 택배를 보낼 때, 마찬가지로 목적지 MAC 주소에는 다음 라우터의 MAC 주소를 적어줍니다. 이러한 과정이 통신하고자 하는 대상이 있는 LAN 영역의 기본 게이트웨이에 도착할 때까지 지속됩니다. 마지막으로 이제 목적지 MAC 주소에 그 대상의 MAC 주소가 들어가게 되고(그쪽 컴퓨터 또는 라우터에서도 ARP.exe가 잘 작동한다면요), 그쪽 영역의 스위치가 최종적으로 택배를 전달해주게 됩니다. 우선 우리의 컴퓨터는 스터브리졸버.exe를 실행시킵니다..스터브리졸버.exe는 UDP.exe를 실행시켜 53번 포트로 설정하고 질의문을 작성합니다.inflearn.com의 주소를 알려주십시오.마찬가지로 UDP 택배는 IP.exe, 이더넷.exe를 실행시켜 순차적으로 포장되고, DHCP 서버가 알려준 DNS 서버의 IP주소를 향해 택배를 보내게 됩니다. DNS 서버에 택배가 잘 도착하였군요.놀랍게도 이 DNS 서버는 inflearn.com의 IP 주소를 모릅니다.단지 inflearn.com의 IP 주소를 찾는 일을 대행해주는 일을 하는 것뿐입니다. DNS 서버가 이 일을 할 때 사용하는 프로그램을 폴리졸버.exe라고 하겠습니다. 폴리졸버.exe는 ICANN의 루트 서버에게 먼저 질의 요청을 보냅니다. 내용은 스터브리졸버.exe가 DNS 서버에 보낸 것과 동일합니다. ICANN은 국제인터넷주소관리기구로 여러분이 인터넷 세상에서 도메인을 사용하고 싶다면 복종해야 되는 비영리 기관입니다. 다양한 도메인 등록 대행사들은 ICANN의 승인과 검증을 거치게 됩니다. 전세계 각지에 배치되어 있는 ICANN 루트 서버는 폴리졸버.exe가 보낸 요청에 대해 com 도메인을 관리하는 서버의 IP 주소를 알려주고 여기에다가 물어보라고 응답해줍니다. 폴리졸버.exe는 다시 com 도메인 관리 서버에 질의 요청을 보냅니다.com 도메인 관리 서버는 응답으로 inflearn.com을 관리하는 DNS 서버의 IP 주소를 알려줍니다. 마지막으로 폴리졸버.exe는 com 도메인 관리 서버가 알려준 서버에 질의를 하고, 그 결과를 스터브리졸버.exe로 전달을 해줍니다. 이제 우리는 inflearn.com의 IP 주소를 얻어오게 되었습니다! 참고로 폴리졸버.exe는 이제 inflearn.com의 IP 주소를 일정 시간 동안 저장해두면서 다른 곳에서 요청이 왔을 때 바로 응답해주게 됩니다. 이제 외부와의 통신과 관련된 부분은 끝났으니, 이 글의 하이라이트인 http 관련 내용이 시작되겠습니다.👏먼저 TCP.exe가 실행이 됩니다. 앞서 말한 듯이 UDP와 같은 층인 4층 프로그램입니다. TCP 택배는 항상 외부로 나가기 전에 IP와 이더넷으로 포장된다는 것을 잊지 마세요!TCP는 UDP와 달리 안정적인 통신을 우선합니다. 통신을 하는 양쪽이 통신을 완전히 준비하는 것을 확인한 상태에서 통신을 진행하는 것이죠.tcp 택배에서 udp에서 보이지 않았던 부분들이 있습니다.시퀀스 번호는 택배 내용물이 많아 택배가 분리될 때, 분리된 것에 몇 번째인가를 나타내주는 부분입니다. tcp의 경우 tcp 포장 단계에서 미리 택배를 분리하게 됩니다. 택배가 분리될 때에는 분리된 각 택배에 송장이 각각 생기죠. 이때 각 송장에 시퀀스 번호가 순서대로 들어가게 됩니다. 이는 UDP보다 훨씬 더 큰 안정성을 가질 수 있게 해줍니다. 택배의 목적을 통해 tcp.exe가 구체적으로 무엇을 해야 하는 가를 알 수 있습니다. 택배의 목적에는 SYN, ACK, FIN 등이 들어갑니다. 여러분의 컴퓨터의 TCP.exe는 서버와의 통신에서 안정성을 확보하기 위해 다음 과정을 거칩니다.여러분의 컴퓨터에서 택배의 목적에 SYN이 적힌 TCP 택배를 보냅니다. SYN은 연결을 허용해도 되는 가를 물어보는 역할을 합니다. HTTP 연결을 하려면 받는 컴퓨터의 포트는 80으로 넣으면 됩니다.서버는 SYN 요청에 응답하기 위해 택배의 목적에 ACK를 넣어서 보냅니다. 또한 서버는 여러분의 컴퓨터를 향해 SYN 패킷을 보냅니다.여러분의 컴퓨터는 서버가 보낸 SYN에 대한 응답으로 ACK를 보내고, 연결 시작을 완료합니다.이제 처리해야 되는 데이터를 가진 TCP 택배를 자유롭게 보내면 됩니다. 큰 데이터가 분리되어도 다시 합칠 수 있고, 중간에 택배가 손상되어도 택배를 다시 달라고 해서 안정성을 가질 수 있게 됩니다. 이제 여러분은 http 연결을 완료한 겁니다.(정확히는 http 메시지를 주고받을 수 있는 준비가 완료된 것이죠)보안 향상을 위해 사용하는 https의 경우, tcp를 통해 통신 준비를 한 뒤, tls라는 것을 이용해 암호화 준비 과정을 거치게 됩니다. 이 과정은 생략하도록 하겠습니다.이제 여러분의 컴퓨터의 브라우저는 inflearn 서버를 향해 GET 요청을 보내게 됩니다.(택배 포장을 하게 됩니다. http 요청을 tcp 택배 안에 넣고, ip 택배 안에 이 tcp 택배를 넣고, 이더넷 택배에 ip 택배를 넣고,,,,) http에서 요청 명령을 분리하는 방법은 줄 바꿈 문자를 사용하는 것입니다.GET 요청은 다음과 같은 문자열들을 넣어서 보냅니다. 줄 바꿈 문자를 사용해 각 명령을 구분하지요.GET / HTTP/1.1HOST: inflearn.com 인프런 서버의 응답은 다음과 같을 겁니다.HTTP/1.1 200 OKDATE: 지금 날짜와 시각Server: node.js(Express) 어쩌고Content-Length: 응답 크기(용량)Content-type: text/html어쩌고 저쩌고................ 이 응답을 받은 웹 브라우저는 여러분에 인프런 메인 페이지를 보여 줄 겁니다. 아직 안 끝났습니다. 여러분은 인프런 메인 페이지에서 오랜 시간 아무것도 안하고 그냥 보고 계시는군요. 컴퓨터는 불필요한 TCP 연결 통로를 해지할 겁니다.여러분의 컴퓨터는 택배의 목적에 FIN을 넣어서 보내줍니다. TCP 연결을 종료하겠다는 의미입니다.서버는 종료에 대한 확인의 ACK 택배를 보냅니다. 그리고 서버도 FIN 택배를 보냅니다.마지막으로 여러분의 컴퓨터가 서버의 FIN에 대한 응답으로 ACK를 보내고, 연결을 종료하게 됩니다. 3줄 요약컴터를 키면 LAN 안에 있는 DHCP 서버를 찾아서 네트워크 기본 정보를 받아온다.기본 게이트웨이 라우터의 도움을 받아 DHCP 서버가 알려준 DNS 서버에 도메인의 ip 주소를 물어본다.기본 게이트웨이 라우터의 도움을 받아 DNS 서버가 알려준 ip주소로 tcp 연결을 하여 안정성을 확보하고 http 데이터를 교환한다. 다루고 싶었지만 분량 상의 문제, 전문 지식 부족의 문제로 다루지 못한 것들이 많았습니다. HOP, 서브넷마스크, Time To Live, Tls, BGP, IPv6 등등...또한 실제 운용 환경에서는 생각 이상으로 많은 경우들을 만나야 하기 때문에 단순히 서적을 참고하는 것만으로는 작성하는 데 어려움이 있었던 것 같습니다. 와이어샤크로 시작하는 데이터분석! 이쪽분야 고인물들 보면 참 부럽습니다......실제와 미묘하게 다른 부분이 있음에도 맥락적 이해를 돕고자 실제와 살짝 다르게 작성해놓은 것도 있으니 양해를 구하며, 네트워크 관련 전문 지식을 습득하고자 하시는 분들은 꼭 RFC 문서를 참고하시길 권장드립니다.이 글을 보시는 분들께 조금이라도 도움이 되었다면 감사하겠습니다.어려운 용어들의 최대한 사용을 자제하였지만, 글에서 다룬 내용 중 추가적으로 더 알아보실 분들은 다음 키워드로 찾아보시면 되겠습니다.프로토콜RFC 문서패킷 포맷브로드캐스트, 유니캐스트NAT패킷패킷 헤더권한이 있는 DNS 서버, 권한이 없는 DNS 서버DNS 재귀적 질의, 비재귀적 질의
네트워크
・
네트워크
・
tcp
・
udp
・
ip
・
dns
・
웹
・
web
・
웹서버
・
브라우저
・
arp
2022. 05. 02.
1
파이참에서 새 프로젝트 만들기 (+줄 번호 옆 빨간 점)
파이참에서 새 파이썬 프로젝트를 만드는 방법에 대해 알아보자. 그전에 먼저, 프로젝트를 구분해야 하는 이유를 간단하게 알아보자. 흔히 a강의 실습, b강의 실습, 프로젝트c 등 다양하게 프로젝트를 만들어서 코딩을 한다. 이렇게 구분하는 이유는 가상환경 때문, 어떤 프로젝트에서 사용되는 패키지가 다른 프로젝트에서는 버전이 다르거나 필요없을 수 있다. 이름 구분 때문. 사실 가장 큰 이유이다. 다른 사람과 코드를 피드백, 전달, 협업할 때 유용하다. (프로젝트 파일을 통째로 넘기면 되니깐) 파이참에 접속하면 다음과 같은 화면이 뜬다. 혹시라도 안 뜬다면(기존의 프로젝트가 열린다면) 맨위에 파일 -> 새 프로젝트를 눌러주면 된다. 여기서 새 프로젝트를 눌러준다. 일단 프로젝트가 저장될 위치를 선택해야 한다. 바탕화면에 저장하는 것을 추천하다. 바탕화면에 hello 폴더(프로젝트 폴더)를 넣고 싶으면 윈도우는 사진처럼 적으면 된다. 그리고 바로 아래쪽에 다음을 이용한 새 환경을 체크한다. 이전에 구성된 인터프리터를 체크하는 것은, 다른 프로젝트의 버전, 패키지를 완전히 공유하겠다는 것이라서, 비추천한다, 다음을 이용한 새 환경을 체크하면, 자동적으로 프로젝트가 저장되는 폴더 안에 venv 폴더라고 지정되어 있을 것이다. 아래쪽에 main.py welcome script를 체크하는 개인의 기호에 맡긴다. 그리고 맨 아래쪽에서 오른쪽에 있는 생성 버튼을 누른다. 조금 더 기다리자. 모든 준비가 완료되면, main.py가 보일 것이다. (프로젝트 생성 시 체크박스를 체크하였다면) 가장 왼쪽에는 프로젝트 디렉토리 구조를 한 번에 볼 수 있다, 가운데부터 쭉 main.py 코드가 나와있다. 코드 가장 왼쪽에는 줄 번호가 나와있다. 그리고 실행조건이 나와있다. 여기서 빨간 점을 볼 수 있는데, 누르면 사라진다.(없앨 수 있다) 디버깅이라는 것을 할 때 사용되는 것이므로, 코드 실행에는 큰 영향을 주지 않는다. 코드를 실행하는 방법은 다양하다. main.py를 보고 있는 상태에서 Ctrl 키 + Shift 키 + 단축키F10을 동시에 눌러준다. main.py 코드 아무데서나 마우스 오른쪽을 누른 후 실행을 누른다. 파이참 화면 오른쪽 위에 실행버튼을 누른다. 다음은 디렉토리 구조가 나와있는 곳(파이참 화면에서 왼쪽)에서 파일이나 디렉토리를 생성하는 영상이다. 다음은 디렉토리 구조가 나와있는 곳에서 파일이나 디렉토리를 삭제하는 영상이다.
파이참
・
pycharm
・
파이썬
・
python
・
코딩
・
프로그래밍
・
인프런