Socket) 개념정리

Bak·2024년 1월 30일
0

Socket

목록 보기
1/4

통신 5계층


→ application계층은 app에 의해 관리되며 나머지계층은 os(운영체제)에 의해 관리된다.


Socket

: 메시지를 내보내고 받는 통로 → 메시지가 아니라 통로임을 주의하기

= 프로그램이 네트워크에서 데이터를 주고받을 수 있도록 네트워크 환경에 연결할 수 있게 만들어진 연결부로 application과 transport계층 사이에 생성된다.

(1) TCP와 UDP의 차이점

  • TCP : 신뢰할 수 있는 통신서비스 (loss, delay)가 거의 없음
    → 손실이 있어서는 안되는 email, web
  • UDP : 신뢰할 수 없는 통신 서비스, 손실에 대한 복구가 없음
    → 손실보다는 속도가 더 중요한 Youtube
  • SSL : 암호화된 TCP Conntection을 제공함.

(2) HTTP
: application 계층에서 browser(HTTP Client)와 Web Server(HTPP Server) 사이에 교환하는 메시지
→ 서버는 과거 요청을 기억하지 않는다.

  • Non-persistent-HTTP
    : client와 server 사이에 메시지를 보낼 때마다 TCP Connection을 맺어야함

  • Persistent HTTP
    : client와 server사이에 하나의 TCP Connection으로 여러 메시지를 보낼 수 있음


Socket 통신과정 - UDP

→ server와 client 각자 socket을 생성
→ client에서 message + serverIP / serverPort를 사용해 메시지를 전송
→ server에서 read, write 후에 serverSocket으로 들어온 메시지안에서 clientIP와 clientPort를 사용해 reply
client에서 read하고 socket을 close함.

  • UDP_Client.py
    → Socket 생성(socket)
    → 메시지 전송(sendto) : 암호화된 message + 보낼 serverIP와 serverPort
    → 메시지 받기(recvfrom) : 서버에서 보낸 modifiedMessage와 serverAddress
    → Socket 닫기(close)
  • UDP_SERVER.py
    → Socket 생성 (socket)
    → Socket에 서버 주소 할당 (bind) : serverIP, serverPort
    → 메시지 받기 (recvform)
    → 메시지 전송 (sendto) : client에 보낼 메시지 + clientAddress

Socket 통신과정 - TCP

- server와 client 각자 socket(serverSocket, clientSocket)을 생성
  • connection 생성
    → server는 request connection이 올때까지 대기(listen)
    → client가 server에 request connection
    → server가 connection 수락(accept), connectionSocket을 생성

  • 실제통신
    → client에서 message를 전송
    → server에서 connectionSocket에 담겨있는 message를 read, write한 후에 connectionSocket으로 전송, connectinoSocket을 close
    → client에서 read하고 socket을 close함

  • TCP Client
    → Socket 생성
    → connect 요청(connect) : serverIP + serverPort
    → 메시지 전송(send) : 암호화된 sentence
    * serverIP와 serverPort를 포함하지 않음
    → 메시지 받기(recv) : 서버에서 보낸 modifiedSentence
    → Socket 닫기(close)

  • TCP Server
    → serverSocket 생성
    → serverSocket에 서버주소 할당(bind) : serverIP, serverPort
    → serverSocket 대기상태(listen)
    → serverSocket 요청 수락, connectionSocket 생성(accept)
    → 메시지 받기(recv) : client에서 보낸 sentence
    → 메시지 전송(send)
    → connectionSocket 닫기(close)
    * UDP server에서는 따로 socket을 닫지 않았음.

0개의 댓글