개발자 성장 일지

2022.03.17 수업 정리< 입출력 용어 정리 >

NEWDODORIPYO 2022. 3. 20. 18:53

17일부터는 입출력 부분의 수업이 진행되었습니다 소켓 통신을 이용해서 옆 사람과 메시지를 주고받는 형태의 수업을 진행했습니다 하지만 부득이하게 bad code 사용했기에 이번에는 코드 리뷰보다는 입출력 수업 중 언급하셨던 용어나 중요한 개념들을 정리해 보려고 합니다 

 

네트워킹(Networking) : 두 대 이상의 컴퓨터를 케이블로 연결하여 네트워크를 구상하는 것 

 

IP 주소 : 컴퓨터(host)를 구별하는데 사용되는 고유한 값 모든 컴퓨터는 IP 주소를 갖는다

 

서버 (Server) : 서비스를 제공하는 곳 

 

클라이언트 (Client) : 서비스를 사용하는 곳 

 

소켓(Socket)

  • 떨어져 있는 두 호스트(서버 , 클라이언트)를 연결해주는 도구로써 인터페이스 역할을 한다 
  • 데이터를 주고 받을 수 있는 구조체로 소켓을 통해 데이터 통로(Stream)가 만들어진다 
  • 소켓의 역할에 따라 클라이언트 소켓(Client Socket) 서버소켓(Server Socket)으로 구분한다 

 

Stream : 데이터가 전송되는 통로

 

패킷(Packet) : 네트워크에서 데이터를 주고받는 전송 단위

 

<네트워크에서 패킷을 보내는 방식>

TCP : 연결을 확인하는 방식 데이터를 보내면 저쪽에서 받았다고 하면 그다음 데이터를 보낸다

       <안전함 , 대신 속도가 느림>

UDP : 동영상 서비스 같은 데서 많이 쓰인다 상대가 받던 안 받던 계속 데이터를 쏘는 방식 

 

Socket 통신

서버

  • 클라이언트 소켓의 연결 요청을 대기하고, 연결 요청이 오면 클라이언트 소켓을 생성하여 통신이 가능하게 한다.
  1. socket() 함수를 이용하여 소켓 생성
  2. bind() 함수로 ip와 port 번호 설정
  3. listen() 함수로 클라이언트의 접근 요청에 수신 대기열을 만들어 몇 개의 클라이언트를 대기시킬지 결정.
  4. accept() 함수를 사용하여 클라이언트와의 연결을 기다림.

클라이언트

  • 실제로 데이터 송수신이 일어나는 것은 클라이언트 소켓이다.
  1. socket() 함수로 가장 먼저 소켓을 연다.
  2. connect() 함수를 이용하여 통신할 서버의 ip와 port 번호에 통신을 시도.
  3. 통신 시도 시, 서버가 accept() 함수를 이용하여 클라이언트의 socket descriptor를 반환.
  4. 이를 통해 클라이언트와 서버가 read(), write()를 하며 통신 ( 반복 )

<출처 -https://wonos.tistory.com/388>

 

 

InputStream

InputStream은 데이터를 byte 단위로 읽는 통로

 

OutputStream

InputStream 반대 개념으로 데이터를 쓰는 통로 , 데이터가 나가는 통로