CS/네트워크
컴퓨터 네트워크
코딩 화이팅
2023. 6. 19. 15:10
클라이언트(브라우저, 유저)<->서버(웹 서버)
프로토콜
- 약속, 규약
- 명령어로 접속을 해서 접속을 한다.(HTTP, SMTP, FTP)
- HTTP(Hypertext Protocol) : html같은 웹에서 화면에 보여지는 것들을 화면과 주고 받을 수 있는 프로토콜
- SMTP(Simple Message Transfer Protocol) : 가져올 때는 pop3 라는 프로토콜을 사용
메세지를 전달해주기 위한 프로토콜 - FTP(File Transfer Protocol) : 파일을 주고 받을 때 사용하는 프로토콜
HTTP
- 대표적인 프로토콜
- GET 명령어
/.../...index.html->요구하는 명령어- 200 응답 값 : 정상적인 통신
- 404 : 페이지가 없음
- 403 : 권한이 없음
AJAX(Asynchrous JavaScript And XML)
- 원래는 클라이언트에서 서버에 접속하면 끝이 남
- 응답을 받고 비동기식으로 요청을 하고 응답을 받기 위해 사용
동기 vs 비동기
- 동기
- 예를 들어 한 함수가 있다면 그 함수가 다 실행될 때까지 기다렸다가 응답을 받으면 진행함.
- 절차적인 수행
- 비동기
- 예를 들어 한 함수가 수행할 때 호출만 되면 바로 넘어감
- 호출에 대한 응답을 받고 별도로 요청을 또 하고 그것에 대한 응답을 또 받을 수 있다.
- 비절차적인 수행
쿠키 vs 세션
둘 다 변수를 저장하는 개념
- 쿠키
- 클라이언트에 특정 부분에 특정 위치에 저장
- 윈도우즈 디렉토리에 쿠키 파일이 존재
- 쿠키를 지운다->로컬에 컴퓨터에 저장된 값들을 지운다.
- 세션
- 변수들이 서버에 저장되어 있음(DB랑은 다르다.)
- DB는 실제 데이터베이스에 저장
- 세션은 웹서버나 WAS에 저장
- 클라이언트에 의해 접속이 됐다.->해당하는 클라이언트에 의해 변수가 생기고 그곳에 저장이 됨.
- 접속이 끊기거나 특정한 시간이 지나면 값들이 지워짐.
ex)로그인하고 다른 곳을 갔다오거나 다른 작업한 후에도 로그인이 그대로 되어 있는 경우
- 변수들이 서버에 저장되어 있음(DB랑은 다르다.)
압축
- 무손실
- .zip
- 한 바이트라도 깨지면 풀리지 않는다.
- 손실
- MPEG
- 약간 깨지는 것도 감지가 되지 않는다.
TCP vs UDP
- TCP
- 정확한 데이터 전달
- UDP
- 스트리밍 데이터 전달
- 손실에 대한 고려
VOIP(Voice Over IP)
- 보이스톡(카카오)
- 음성->데이터(IP에 의해 전달)->음성
- IP네트워크, 서버 인프라, 연결 관리 서버 등이 충족되어야 됨.
- UDP
포트(Port)
- IP(서버)를 포트에 전달
- 포트당 어플리케이션이 있다. 해당하는 app에서 IP에서 전달한 데이터를 받는다.
- ex) FTP->21번 포트, HTTP->80번 포트(웰노운 포트)
- 관련된 서버, 컴퓨터 포트를 확인 명령어 : netstat -n
DNS 서버
- www.naver.com 같은 url 주소를 컴퓨터는 알 수 없기 때문에 DNS서버를 통해 IP Address xxxx.xxxx.xxxx.xxxx같은 숫자들로 바꿔준다.
- 목적지까지 갈 수 있게 해주는 것 : IP
- 데이터를 전달해주는 것 : TCP
- IP를 찾아가는 경로 : 라우팅
- 라우터 : 전달을 위한 목적
- 해당하는 IP를 가지고 있는 패킷들을 전달(IPv4)
- 더 업그레이드 된 것 : IPv6
NAT(Network Address Translation)
- Private IP를 사용하는 송신 서버들 안에 Private IP를 사용하는 서버를 수신 IP로 보낼 때 Private IP를 Public IP로 바꿔서 전달을 해준다.
- 네트워크 경계에 위치한 장치(라우터)에서 실행되며, 네트워크 내부의 컴퓨터가 외부와 통신할 때, 각각의 Private IP를 해당 장치의 Public IP 주소로 변환하고, 반대 방향의 통신에서는 Public IP주소를 다시 해당 컴퓨터의 Private IP주소로 변환한다.
네트워크 관련 명령어
- ipconfig
- 자신에게 할당받은 IP주소를 알 수 있다.
- ping
- Ping+IP주소 : 그 IP주소를 가지는 컴퓨터에서 응답을 받음.
그곳의 IP주소, 서버를 알 수 있다.
- Ping+IP주소 : 그 IP주소를 가지는 컴퓨터에서 응답을 받음.
- tracert
- tracert+url : 해당 url에 가는 라우팅 정보를 준다.
- 서버 문제를 파악할 때 주로 사용
- nslookup
- 해당하는 도메인의 IP를 응답시켜준다.
이더넷
- 물리적 접속에 대한 세부 규격, 통신을 위한 규격
허브
- 만약 유선으로 많은 컴퓨터들이 연결되어 있는 사무실이 있다고 하면 허브에 의해 연결이 되어 있다.
- 연결된 컴퓨터들에 똑같은 데이터를 전송한다.
- 해당하는 이더넷 카드가 해당하는 데이터가 왔을 때 받고 데이터를 올려 어플리케이션이 받아간다.
HTTP->HTTPS
- Secure 보안의 의미(암호화 통신)
전자서명 vs 전자인증
- 전자서명 : 이 데이터가 원본 데이터라는 것을 증명
- 전자인증 : 기관이 존재-사용자라는 것을 증명
Hash
- 주민번호 같은 것을 DB에 저장할 수 없기 때문에 HashTable이라는 것에 변조를 하여 저장
- 단방향이기 때문에 복호화가 안된다.
- 암호화 : 키를 암호화 하는 것
- 복호화 : 암호화한 키를 다시 원본으로 돌리는 것
- 확인하기 위해 어떤 특정 값으로 저장을 한다. 그리고 나중에 확인을 할 때 그 값을 모르지만 일치하는 지만 확인한다.
Packet Switching vs Circuit Switching
- Packet Switching
- 데이터를 패킷 단위로 쪼개서 전송하는 방식
- 패킷은 다음 링크로 전송하기 전에 저장을 한 뒤 전달하는 store and forward 방식
- 헤더에는 출발지(source)와 목적지(destination) 정보가 있다.
- 라우팅 알고리즘을 이용하여 경로를 설정하고, 중간의 라우터들을 거쳐 최종 목적지에 도달하게 된다.
- 이러한 과정에서 패킷은 다음 라우터로 이동하기 위해 큐에서 대기(queueing)하는데 이 때 수용할 수 있는 큐의 범위를 초과하게 되면 손실(loss)이 발생하게 된다.
- Circuit Switching
- 하나의 회선을 할당받아 데이터를 주고 받는 방식
- 통신을 위한 연결을 해야하며 연결이 되고 나면 출발지(source)로부터 목적지(destination)까지 도착하는데 사용되는 회전 전체를 독점(dedicated)하기 때문에 다른 사람이 끼어들 수 없다.
- 전화와 같은 실시간 통신이기 때문에 속도와 성능이 일정
- Circuit switching이 회선을 분할하는 방식에는 FDM과 TDM이 있다.
- FDM(Frequency Division Multitasking) : 할당된 대역폭을 나누어 사용하는 방식
- TDM(Time Division Multitasking) : 할당된 대역폭을 시간 단위로 나누어 번갈아가며 사용하는 방식
Circuit Switching과 Packet Switching의 전달 방식 비교