네트워크 관련 글 순서(참조 영상 기준)
애플리케이션 계층
- 네트워크 애플리케이션의 원리
- DNS
- TCP를 이용한 Socket 프로그래밍
전송계층
- 전송 계층 서비스의 원리
- rdt 원리
- 연결 지향 전송: TCP
- TCP 흐름 제어(3-way handshake, 4-way handshake)
- TCP 혼잡 제어
네트워크 계층
- 네트워크 계층 서비스
- Network Address Translation(NAT), DHCP
- 라우팅 알고리즘(Link State, Distance Vector)
- 계층적 경로 변경(AS)
링크 계층
- 다중 엑세스 프로토콜
- LANs(근거리 통신망)
무선 및 모바일 네트워크
- 무선 네트워크
웹 요청 시 일어나는일
네트워크 보안
- 대칭키 & 공개키,RSA 암호화
- Secure e-mail, SSL, MAC
- IPSec(ESP), Firewall(방화벽)
애플리케이션 계층이란?
최상위 계층으로 사용자 또는 애플리케이션이 네트워크에 접속 할 수 있게 해주는 계층
애플리케이션의 예시) 페이스북,인스타그램,당근마켓 등
쉽게 얘기하면 사용자가 웹,이메일, 파일 공유 등 실제로 사용하는 것들을 체감할 수 있는 서비스를 제공하는 계층인데, 이 계층에 속한 프로토콜들로 인해 통신할 수 있게 된다.
관련 프로토콜) HTTP,SMTP,FTP,SSH,DNS 등등
애플리케이션은 네트워크를 통해 데이터를 통신해야 하는데 아래와 같은 두가지 구조가 있다.
네트워크 어플리케이션 구조
Client-server architecture
- 서버와 클라이언트 간 통신
- Client: 사용자를 뜻하는 것으로, 서버에게 요청(request)을 보내고, 응답(response)를 대기
- Server: 24시간 대기하며, 요청을 받았을 때 해당하는 결과 응답을 보내줌
- 서버의 주소는 고정되어야함
P2P(Peer-To-Peer) architecture
- 서버에 의존하지 않고 호스트(Peer)끼리 직접 통신
- 각각이 서버와 클라이언트가 둘다 될 수 있어서, 데이터를 주고 받음
- 비트토렌트, 스카이프 등이 있음
이러한 각각의 구조에서 프로세스 간의 통신을 하기 위해선 서로의 주소를 알고 있어야하는데 IP,PORT 주소를 알아야한다. 1
IP: 특정 컴퓨터의 주소
PORT: 컴퓨터 내 특정 프로세스의 주소
아래에는 대표적인 Client-server 구조를 가진 웹 애플리케이션 프로토콜이다. 2
HTTP(HyperText Transfer Protocol)
: 웹 통신 프로토콜로, 다른 오브젝트에 대한 링크가 있는 텍스트를 전송하는 프로토콜이다.
Client-server 구조
TCP(데이터 전송 프로토콜)를 사용함
stateless(무상태 지향)
- 서버가 클라이언트의 상태를 가지고 있지 않음
- 상태를 유지해야하는 경우, 쿠키나 세션을 통해 해결함(로그인 등)
- 밑에서 다시 얘기할 예정
HTTP connections
- non-persistent HTTP(비연결)
- 데이터를 주고 받을때마다 연결 관계를 끊었다가 다시 연결하는 형태
- 장점: 한정된 서버 자원을 효율적으로 쓸 수 있음. 클라이언트에게 할당되었던 자원을 끊음으로서 재사용 가능.
- 단점: 연결을 새로 맺음으로 인해 같은 클라이언트와 재 통신 시 시간 증가(연결시간)
- persistent HTTP(연결)
- 연결을 이어서 사용하는 형태
- 클라이언트의 요청들을 다 응답해주기전엔 연결을 이어서 사용하여 효율성 증가
- 매번 새로 연결할 필요가 없어짐
message 구조
- request
- GET: 어떤 HTTP 메서드 사용했는지
- search?q=hello&hl=ko: 요청대상
- HTTP/1.1: 버전
- response
- HTTP/1.1 200 OK: 버전과 상태코드
- 200 성공
- 3xx 리다이렉션
- 4xx 클라이언트 오류
- 5xx 서버 오류
- HTTP 헤더
- HTTP 전송에 필요한 부가정보
- Content-type: 컨텐츠 타입
- Content-Length: 컨텐츠 길이
- 기타 등등이 있다.
- 구분을 위한 띄어쓰기 한줄
- <html> ~: 메시지 바디. 실제 전송할 데이터
user-server state: cookies
- 위에서 HTTP 프로토콜은 무상태를 지향한다고 했는데, 로그인 등의 경우 상태정보를 알기위해서 클라이언트측에 정보를 저장(쿠키저장)
- 클라이언트측은 서버에 요청할때 해당 쿠키를 같이 보내고, 서버측은 쿠키를 통해 상태 정보를 알 수 있음
- 쿠키가 없으면 임의의 쿠키를 만들어서 client에게 보내줌
- 쿠키 세션 관련 참조 글 2022.01.05 - [CS/Web] - 쿠키vs 세션
웹 캐시(프록시 서버)
- 웹 캐시: 웹 문서를 임시 저장하기위한 정보기술
- 한번 받았던 데이터를 다시 요청할때, 서버에 있는 원본 데이터가 그대로라면 굳이 바꾸지 않고 그냥 써도 된다. 이때 서버는 너가 요청한 데이터가 변경되지 않았다는 것을 알려주고, 그러면 클라이언트는 웹 캐시에 있는 데이터를 그대로 사용한다.
- if-modified-since, last-modified: 변경된 정보를 알려주는 헤더
- 304 not modified: 변경되지 않았음을 알려주는 상태 코드
- 프록시 서버
- 클라이언트와 서버 사이에 데이터를 전달해주는 서버
- 메인 서버가 모든 클라이언트의 요청을 받게 되면, 응답하고 답하는 과정이 늦어지고 부담도 많이 가게 된다.
- 웹 캐시 기술을 적용한 프록시 서버가 먼저 요청을 받아, 요청에 해당하는 데이터를 프록시 서버가 있으면 클라이언트에게 전달. 없으면 서버측에 요청하여 받아서 전달한다.
http 1.1 vs http 2.0
- 1.1은 구현의 단순성, 접근성을 중점으로 최적화
- 2.0은 성능 위주
- 세부내용 아래 블로그 참조( 추후 내용 정리..)
- https://ijbgo.tistory.com/26
HTTPS
- http에 통신소켓을 SSL을 적용시켜 암호화 통신으로 이루어짐
- 2022.01.28 - [CS/NetWork] - [네트워크] Secure e-mail, SSL, MAC
참조
KOCW 네트워크 강의 - 한양대 2018 1학기 이석복 교수님
- 실행중인 프로그램. 자세한 참조는 아래링크 클릭
- 약속,규약,협약을 의미하는 단어로, 여기선 정보를 교환하는 형태나 방법을 정해둔 규약으로 보면 된다. [본문으로]
'CS > NetWork' 카테고리의 다른 글
[네트워크] RDT 원리 (1.0, 2.0, 2.1, 2.2, 3.0) (2) | 2022.01.14 |
---|---|
[네트워크] 전송 계층 서비스의 원리(TCP,UDP) (0) | 2022.01.13 |
Socket Programming(소켓 프로그래밍) (0) | 2022.01.12 |
DNS(Domain Name System) 뜻,구조 (1) | 2022.01.11 |
OSI 7계층 (0) | 2022.01.05 |
댓글