통신의 타겟 : 소켓
소켓 통신 과정
Server 입장
- Application데이터 생성
Application에서 데이터가 생성
이 데이터는 전송 계층으로 전달
- Segment 생성
전송 계층에서는 데이터를 Segment 로 나눔
각 Segment에는 TCP Header 와 Application데이터가 들어갑니다.
- Header 추가
각 Segment에는 TCP Header 가 추가
송신자와 수신자의 포트 번호, 시퀀스 넘버, 확인 응답 번호 등의 정보가 있음
- Packet생성
Segment에 TCP Header 가 추가
네트워크 계층으로 넘어가며 IP Header 가 추가 ⇒ Packet
- 데이터 전송
Packet은 네트워크를 통해 목적지로 전송
Packet의 전송 경로는 라우팅 등의 과정을 거쳐 목적지에 도착
- 도착지에서의 Packet처리
Packet이 도착지에 도달
네트워크 계층에서 IP Header를 제거하고 전송 계층으로 넘겨짐
- Segment 재조립
전송 계층에서는 Packet으로 도착한 데이터를 Segment로 다시 조립
- Header 제거
Segment에서는 TCP Header를 제거하고 Application 계층으로 데이터를 전달
- Application 데이터 처리
Application에서는 받은 데이터를 처리
Client 입장
- Application데이터 생성
Application에서 데이터가 생성
전송 계층으로 전달
- Segment생성
전송 계층에서는 데이터를 Segment로 나눔
각 Segment에는 TCP 헤더와 Application 데이터가 들어감
- Header추가
각 Segment에는 TCP Header가 추가
송신자와 수신자의 포트 번호, 시퀀스 넘버, 확인 응답 번호 등
- Packet생성
Segment에 TCP Header가 추가
네트워크 계층으로 넘어가며 IP Header가 추가 ⇒ Packet
- 데이터 전송
Packet은 네트워크를 통해 서버로 전송
Packet의 전송 경로는 라우팅 등의 과정을 거쳐 서버에 도착
- 도착지에서의 Packe처리
- Packet이 Server에 도착
네트워크 계층에서 IP Header를 제거하고 전송 계층으로 넘겨짐
- Segment 재조립
전송 계층에서는 Packet으로 도착한 데이터를 Segment로 다시 조립
- Header 제거
Segment에서는 TCP Header를 제거
Application 계층으로 데이터를 전달
- Application데이터 처리
Application에서는 받은 데이터를 처리
WWW : 전세계가 인터넷으로 이어진 것
LAN : 공유기가 만들어낸 WWW
Client : 을 - 요청자
ip주소, port 번호를 알아야 요청할 수 있음
Server : 갑 - 요청받는 자
IP : 도착지
Port : 논리적인 번호
어떤 프로세스랑 연결할지 알려줌
범위 : 0 ~ 6만 5천 몇 개 / 16bit = 2Byte
표시 : + port 번호
ex) 모든 웹 서버는 : 443이 생략되어있음
Socket은 최소 2개가 필요함 : 리스너 + 클라이언트마다 연결
serverSocket : 연결용
통신을 연결받아 새로운 socket을 생성하고 통신이 끊김
socket : 연결후 생성
여러명의 client들의 요청을 받기 위해
반드시 스레드가 필요함 : 리스너 + 클라이언트마다 연결
리스닝 : 소켓이 연결을 리다리는 것
연결되는 순간 엑셉트가 자동으로 실행되어 자동 리턴되어 소켓이 생성
포트는 랜덤으로 생성됨
ServerSocket serverSocket = new ServerSocket(10000); // 소켓 생성 Socket socket = serverSocket.accept(); // 연결후 소켓 추가
port는 OS가 막고 있음 > 허용하면됨
루프백 IP : 밖으로 나가지 않고 돌아오는 것
자기 PC를 의미
localhost, 루프백 = 127.0.0.1
System.out.println(e.getMessage()); // 에러 확인 e.printStackTrace(); // 에러 자세히 확인
Share article