멀리 있는 컴퓨터를 찾아가기 위한 주소
남의 컴퓨터가 내 컴퓨터에서 실행 중인 특정 프로그램을 찾아 가기 위한 번호
내 컴퓨터가 내 컴퓨터에서 실행중인 프로그램을 구별하기 위한 번호
여러대의 컴퓨터가 연결된 것
가까운 지역을 하나로 묶은 네트워크
(가깝다? => 하나의 네트워크 장치에 연결)
멀리있는 지역을 한데 묶은 네트워크
(LAN 여러개를 다시 하나로 묶은 것)
1:1로 통신
특정 다수와 1:N으로 통신
네트워크에 있는 모든 대상과 통신
일종의 약속, 어떤 노드가 누구에게 무엇을 어떻게 보내는지 작성하기 위한 양식
네트워크를 통해 전달되는 데이터(여러번 포장된 택배상자와 유사하다)
패킷은 | 헤더 | 페이로드 | 풋터 |의 형태로 구성되며,
여러 프로토콜로 캡슐화 되어 있다.
하나의 네트워크 대역에서 장비간 데이터를 전달하는 역할을 수행하며 오류제어, 흐름제어도 수행한다.
LAN통신에서 사용
다른 네트워크 대역까지 어떻게 데이터를 전달할지 제어하는 일을 담당 (발신에서 착신까지의 패킷의 경로를 제어)
WAN통신에서 사용 (IP주소, 서브넷 마스크, 게이트웨이 3가지를 묶어서 같이 사용한다)
A-E클래스까지 나누며 A부터 네트워크 구분이 한 필드씩 늘어나는 구조(낭비가 심하다!!)
IP주소를 더 작은 단위로 나눠서 구분
우선은 IP주소와 서브넷 마스크를 왜 같이 쓰는지 정도만 알면 된다. (더 알면 더 좋음)
개별 컴퓨터는 각자 다른 사설 IP를 갖고 있지만 공유기를 통해 네트워킹을 할때는 공유기가 부여받은 IP주소로 통일되어 통신한다 (중요!)
공유기는 보통 내부(사설IP), 외부(공인IP) 2개의 IP주소를 갖고 있다.
공유기는 클라이언트가 서버에 요청을 하는 것만 처리해주기 때문에 외부 서버에서 클라이언트에 먼저 요청할 수 없음
=> 클라이언트가 요청을 하면 공유기가 저장했다가 응답을 받으면 해당 요청을 소거함
=> 공유기를 사용하더라도 외부에서 먼저 요청이 가능하도록 설정할 줄 알아야 한다!
- 사용중인 네트워크에 속성에 진입
- 인터넷 프로토콜 버전 설정(더블 클릭)
- 서버는 IP가 바뀌면 안되기 떄문에 자동으로 받도록 되어있는 설정을 고정으로 변경시킨다.
- ip,서브넷 마스크, 게이트웨이를 설정한다 (연결하려는 네트워크 장비에 맞게 바꿔야함, 보통 앞자리는 같게하고 뒷자리를 다르게 한다)
=> 보통 앞자리를 대역이라고 이야기함
IP주소를 네트워크 포지션 / 호스트 포션으로 나누기 위해 사용하는 숫자 조합
서브넷 마스크는 IP와 같은 길이의 비트로 표시되며 1은 네트워크, 0은 호스트를 나타낸다.
서브넷 마스크가 255.255.255.0 이면
1111 1111.1111 1111.1111 1111.0000 0000으로
IP주소의 앞 3번째 클래스까지 네트워크를 나타내고 마지막 클래스가 호스트를 나타낸다. (256^3개의 네트워크와 256개의 호스트를 가질 수 있음)
통신을 위해 나갈 때 반드시 거치도록 하는 주소(공유기 주소)
전송 계층으로 송신자와 수신자의 프로세스를 연결하는 통신 서비스를 제공한다. (신뢰성, 흐름제어, 다중화 등 편리한 서비스 제공)
하나의 포트는 하나의 프로세스만 사용해야 한다.
포트번호가 일반적으로 정해져 있지만 반드시 지킬 필요는 없다
(웹은 80번, 안쓴다면 연결시 포트번호를 명시해줘야함)

미리 선점해서 사용하고 있는 포트번호도 있다

클라이언트는 주로 약 5만 ~ 6만 번호대를 매번 바꿔가며 사용한다.
통신하고자 하는 양쪽 단말(End Point)가 서로 준비 되었는지, 통신간 빠진 데이터는 없는지 등을 체크하는 안전한 통신 프로토콜
웹으로 주고받는 데이터는 대부분 TCP이다.

보안과 신뢰성보다 전송 속도와 효율성을 중시하는 데이터 전송 프로토콜
프론트 엔드와 관련된 코드를 서버로부터 받아오기 위한 통신 규약 (HTML, CSS, JS등)

Request Line이 중요하다!

GET: 클라이언트가 서버에 문서룰 읽어올 때 사용
(주소에 데이터가 포함)
POST: 클라이언트가 서버에 정보를 제공할 때 사용
(주소에 데이터가 포함되지 않고 Body에 담는다)
GET은 주로 간단한 데이터, POST는 중요하거나 크기가 큰 데이터에 주로 사용한다.
scheme://host[:port][/path][?query]의 형태
IP주소를 글자 형식의 주소로 매핑시킨 것
DNS서버는 도메인 이름을 네트워크 주소로 바꾸거나 그 반대 변환을 수행하도록 개발되었다.
전 세계에 DNS호스팅을 해주는 곳은 많다.
DNS 8.8.8.8은 구글 DNS (아래 이미지의 로컬 DNS에 해당)

루트 DNS 서버는 전 세계 13곳으로 한정됨.
각 DNS 서버는 하위의 DNS 서버를 관리하며 도메인을 쪼개서 매핑함
200 OK: 클라이언트 요청 성공
403 Forbidden: 클라이언트가 권한이 없는 페이지를 요청했을 때
404 Not Found: 클라이언트가 서버에 없는 페이지를 요청했을 때
500 Interner Server Error: 서버의 일부가 멈췄거나 설정의 오류가 발생(코드 문제)
503 Service Unavailable: 최대 세션 수를 초과했을 때
각자 nginx를 통해 서버를 켜고 옆 자리의 html 디렉토리에 있는 .txt파일 요청해서 받아보기
주소창에 옆 자리 IP:80/[파일명]의 형태로 호출하여 성공
- 호출이 안되면 방화벽 확인(원래는 설정하는데 편의상 해제)
- 서버가 켜지면 프로세스에 잘 올라갔는지, 설정한 포트에서 LISTENING상태인지 반드시 확인하기
- cmd창에 ping [ip]로 연결 확인해보기
- 방화벽 미해제로 연결 불가
- 공유기에서 자동으로 IP주소를 받도록 설정한 pc들이 있어서 부여받은 번호로 설정한 사람들과 꼬임이 있었음
VMware에 설치해둔 centOS 리눅스로 IP주소 수동설정 하고 구글 DNS에 ping 날려보기
리눅스에서 ipconfig = ifconfig, ip addr (net-tools 다운 필요)
다운로드 명령어: yum install net-tools
- vi로 /etc/sysconfig/network-scripts 설정 편집
- 편집해야 할 설정:
- BOOTPROTO=static | (static:수동, dhcp: 자동)
- ONBOOT=yes
- IPADDR=[내가 쓸 주소]
- NETMASK=[가상 공유기 서브넷 마스크 주소]
- GATEWAY=[가상 공유기 주소]
- DNS1=8.8.8.8 (테스트를 위한 구글DNS)
옆 사람의 ip주소:포트로 접근하여 VM에서 실행중인 서버에서 파일 다운받아 보기

Virtual Network Editor를 관리자 권한으로 실행
VMware의 가상 공유기의 공인 ip는 내 컴퓨터의 ip와 동일하기 때문에 내 컴퓨터의 ip를 입력하면 가상 공유기의 공인 ip에 접근할 수 있다.
하지만 요청없이 접근한 것이기 때문에 해당 게이트웨이를 통해 외부와 통신하는 내부 호스트들에 접근할 순 없는데, 이때 가상 공유기의 특정 포트에 미리 연결해둘 내부 호스트의 주소를 지정해두고 해당 포트로 접근시 자동으로 매핑되도록 설정할 수 있다.

가상 공유기의 1175번 포트로 접근시 미리 설정해둔 내부 호스트의 특정 포트로 매핑하는 속성 추가
보통 웹의경우 80으로 포트포워딩을 해두면 따로 포트를 명시하지 않아도 자동으로 연결되는데 만약 위의 실습의 경우 이미 노트북의 80번 포트를 사용중이라면 가상 공유기에 접근할 수 있을까?

VMware를 켜두고 있던 노트북에서 80번 포트에 nginx를 켜둔 채로 주소:80로 연결 시도해보았다.


노트북과 VMware 모두 nginx를 켜뒀기 때문에 일단 연결은 되지만 어디와 연결되었는지는 모르니 파일을 다운받아 알아봤다.


VMware안에서 켜둔 파일이 다운로드 되지 않음


노트북에 있는 nginx/html 디렉토리에 만들어둔 파일이 불러와지는 것을 보니 이미 사용중이라면 포트포워딩을 했더라도 연결되지 않음을 확인할 수 있었다.