일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 자료구조
- cs
- Front
- 3d
- math
- 알고리즘
- algorithm
- nlp
- PRML
- Python
- Depth estimation
- FineGrained
- dl
- classification
- nerf
- Torch
- Meta Learning
- computervision
- GAN
- 딥러닝
- SSL
- ML
- CV
- 머신러닝
- pytorch
- web
- FGVC
- REACT
- Vision
- clean code
- Today
- Total
KalelPark's LAB
[ Computer Network ] Application layer, Socket? 본문
Application layer
- Internet은 아주 복잡하기에, 계층화하여 설계하는 것이 중요합니다. 이러한 방법이 네트워크 프로토콜 계층이다.
보통 OSI 7계층을 사용하거나, TCP/IP 4계층을 사용한다. (사실 세부적으로는 동일합니다.)
- Application architecture
- Client : 서버와 클라이언트 간 통신
- Peer to Peer : 호스트끼리 직접 통신하는 것
* 여기서 호스트란?! IP를 가지고 있는 양방향 통신이 가능한 컴퓨터를 의미합니다.
Application layer Protocol
- 인터넷은 Application 계층에 2개의 전송 프로토콜이 존재합니다.
TCP(Transmission Control Protocol), UDP(User Datagram Protocol)을 제공합니다.
- TCP, UDP라는 전송프로토콜은 Application layer가 아니라, 한 단계에 하위층인 Transport layer이다.
* Socket이란?
- 데이터를 내보내거나, 받기 위한 실제적인 청구 역할을 합니다. 즉, 소켓은 프로토콜, IP, 포트로 구성되어 있습니다.
Socket은 application layer 사이에 존하는 인터페이스를 지니고 있습니다.
서버의 관점에서 보면, 소켓의 연결 오쳥을 대기하고, 연결이 되면, 클라이언트 소켓을 생성하여 통신이 가능하게 합니다.
1) socket() 함수를 이용하여 소켓을 생성
2) bind() 함수로 ip와 port 번호를 설정하게 됩니다.
3) listen() 함수로 클라이언트의 접근 요청에 몇 개를 대기시킬지를 결정합니다.
4) accept() 함수를 사용하여 클라이언트와의 연결을 기다립니다.
Socket의 종류
스트림(TCP)
- 양방향으로 바이트 스트림을 연결, 연결 지향성
- 오류 수정, 전송처리, 흐름제어 보장
- 송신된 순서에 따라 중복되지 않게 데이터를 수신 -> 오버헤드가 발생
- 소량의 데이터보다 대량의 데이터 전송에 적합 -> TCP 사용
데이터그램(UDP)
- 비연결소켓
- 데이터의 크기에 제한이 있음
- 확실하게 전달이 보장되지 않음. 데이터가 손실되어도 오류가 발생하지 않음
- 실시간 멀티미디어 정보를 처리하기 위해 주로 사용
HTTP(Hyper Text Transfer Porotol)
- 웹의 애플레이케이션 프로토콜이다.
HTTP는 클라이언트 프로그램과 서버프로그램으로 구현된다.
- 서로 다른 종단 시스템에서 수행되는 클라이언트 프로그램과 서버 프로그램은 서로 HTTP 메세지를 교환하고 통신합니다.
HTTP는 웹 클라이언트가 웹 서버에게 웹 페이지를 어떻게 요청하는지와 서버가 클라이언트로 어떻게 웹 페이지를 전송하는가
정의합니다.
응답메세지
- 200 OK : 요청이 성공, 정보가 응답으로 보내짐
- 400 Bad Request : 서버가 요청을 이해할 수 없다.
- 404 Not Found : 요청 문서가 서버에 존재하지 않습니다.
- 505 HTTP Version Not Supported : 요청 HTTP 프로토콜 버전을 서버에서 지원하지 않습니다.
P2P 파일분배
- Peer To Peer의 약어
- P2P 구조는 항상 켜져 있는 서버에 최소한 혹은 전혀 의존하지 않습니다.
- 호스트 쌍들이 직접 연결하며, 제공자와 응답자가 대등한 관계라고 표현하기도 합니다.
Socket
- 일반적인 네트워크 애플리케이션은 2개의 서로 다른 종단시스템에 존재하는 서버 프로그램과 클라이언트 프로그램으로 구성
- 얘네 둘을 실행시키면 각각의 프로세스가 생성되고, Socket이라는 통로를 통하여 읽는 것이 가능합니다.
- 서버와 클라이언트가 데이터를 주고 받는 것이 가능합니다.
'Study > Computer Network' 카테고리의 다른 글
[ Computer Network ] Socket Programming? (0) | 2023.03.31 |
---|---|
[ Computer Network ] TCP/IP? (0) | 2023.03.17 |