소켓 통신

Jan 09, 2024
소켓 통신
 
통신의 타겟 : 소켓
notion image
notion image
notion image
notion image
notion image
 

소켓 통신 과정


Server 입장

  1. Application데이터 생성
Application에서 데이터가 생성
이 데이터는 전송 계층으로 전달
  1. Segment 생성
전송 계층에서는 데이터를 Segment 로 나눔
각 Segment에는 TCP Header 와 Application데이터가 들어갑니다.
  1. Header 추가
각 Segment에는 TCP Header 가 추가
송신자와 수신자의 포트 번호, 시퀀스 넘버, 확인 응답 번호 등의 정보가 있음
  1. Packet생성
Segment에 TCP Header 가 추가
네트워크 계층으로 넘어가며 IP Header 가 추가 ⇒ Packet
  1. 데이터 전송
Packet은 네트워크를 통해 목적지로 전송
Packet의 전송 경로는 라우팅 등의 과정을 거쳐 목적지에 도착
  1. 도착지에서의 Packet처리
Packet이 도착지에 도달
네트워크 계층에서 IP Header를 제거하고 전송 계층으로 넘겨짐
  1. Segment 재조립
전송 계층에서는 Packet으로 도착한 데이터를 Segment로 다시 조립
  1. Header 제거
Segment에서는 TCP Header를 제거하고 Application 계층으로 데이터를 전달
  1. Application 데이터 처리
Application에서는 받은 데이터를 처리
 

Client 입장

  1. Application데이터 생성
Application에서 데이터가 생성
전송 계층으로 전달
  1. Segment생성
전송 계층에서는 데이터를 Segment로 나눔
각 Segment에는 TCP 헤더와 Application 데이터가 들어감
  1. Header추가
각 Segment에는 TCP Header가 추가
송신자와 수신자의 포트 번호, 시퀀스 넘버, 확인 응답 번호 등
  1. Packet생성
Segment에 TCP Header가 추가
네트워크 계층으로 넘어가며 IP Header가 추가 ⇒ Packet
  1. 데이터 전송
Packet은 네트워크를 통해 서버로 전송
Packet의 전송 경로는 라우팅 등의 과정을 거쳐 서버에 도착
  1. 도착지에서의 Packe처리
  1. Packet이 Server에 도착
네트워크 계층에서 IP Header를 제거하고 전송 계층으로 넘겨짐
  1. Segment 재조립
전송 계층에서는 Packet으로 도착한 데이터를 Segment로 다시 조립
  1. Header 제거
Segment에서는 TCP Header를 제거
Application 계층으로 데이터를 전달
  1. Application데이터 처리
Application에서는 받은 데이터를 처리

 
WWW : 전세계가 인터넷으로 이어진 것
LAN : 공유기가 만들어낸 WWW
notion image
 
Client : 을 - 요청자
ip주소, port 번호를 알아야 요청할 수 있음
Server : 갑 - 요청받는 자
 
IP : 도착지
Port : 논리적인 번호
어떤 프로세스랑 연결할지 알려줌
범위 : 0 ~ 6만 5천 몇 개 / 16bit = 2Byte
표시 : + port 번호
ex) 모든 웹 서버는 : 443이 생략되어있음
notion image
 
Socket은 최소 2개가 필요함 : 리스너 + 클라이언트마다 연결
serverSocket : 연결용
통신을 연결받아 새로운 socket을 생성하고 통신이 끊김
socket : 연결후 생성
여러명의 client들의 요청을 받기 위해
 
반드시 스레드가 필요함 : 리스너 + 클라이언트마다 연결
 
리스닝 : 소켓이 연결을 리다리는 것
연결되는 순간 엑셉트가 자동으로 실행되어 자동 리턴되어 소켓이 생성
포트는 랜덤으로 생성됨
ServerSocket serverSocket = new ServerSocket(10000); // 소켓 생성 Socket socket = serverSocket.accept(); // 연결후 소켓 추가
notion image
port는 OS가 막고 있음 > 허용하면됨
notion image
 
루프백 IP : 밖으로 나가지 않고 돌아오는 것
자기 PC를 의미
💡
localhost, 루프백 = 127.0.0.1
notion image
 
System.out.println(e.getMessage()); // 에러 확인 e.printStackTrace(); // 에러 자세히 확인
notion image
Share article

vosw1